1. В какой ячейке хранятся данные джойстика?
2. как адресуется видеопамять?
Вид для печати
1. В какой ячейке хранятся данные джойстика?
2. как адресуется видеопамять?
Физически данные джойстика закодированы как биты и не могут быть определены без вычислений.
Слава богу, Атарьцы запрограммировали это так, что вычисления минимальны.
Никакой надежды вычислить это как диагональное движение.
Только покоординатное!
Поймите, я говорю о том, как было спроектировано!!!
"Всё было украдено до нас!"
Я, пока от Вас не получу того, что Вы хотите от джойстика, не знаю КАК делать его программу.
Можно было бы сделать джойстик реальным устройством, но ответьте:
1. что такое открыть канал джойстика? (Смысл инициализации)
2. что такое считать байт с джойстика (Сам знаю.)
3. что такое считать состояние джойстика (Вероятно состояние кнопки)
В общем, я не понимаю, каким должен быть ДРАЙВЕР.
А хендлер ЕСТЬ!
- - - Добавлено - - -
Данные джойстика берутся из ячейки STICK1=$279
Данные кнопки берутся из ячейки STRIG1=$285
Само по себе это МАЛО!
ezswift, Вы слишком усложняете.
Достаточно подняться до уровня "с 6502 на Ты", прежде чем копаться в устройствах.
Ещё одно видео готово
https://youtu.be/9anFBhHWfdI
Довёл программу для шрифтов в Бейсике до конца. Работает :)
https://youtu.be/2zEoFjGurU0
Нашел ячейку, показывающую, что Бейсик подключен.
Надо бы сделать так, чтобы индикация была,
типа ... Отец, БЕЙСИК-то подключи!!!
Мне эта прога уже, изрядно надоела... но, может ещё одно видео по ней запостю...
Ну, что же, подправил программку.
Вот окончательный текст:
Код:; Russify the BASIC
;> I need Fully Qualified File Name
;> like D:FONTNAME.FNT
;> writen in UPPERCASE register
;> as a responce to prompt!
; Evgeni Zolotarev, 2017
; rubas.com
.ou rubas.com
; Included LIBS
.in syseq.mae
.in macro.mae
; Atari Equates
DOSINI = $0c
WARMST = $08
CARTA = $A000
CHBAS = $02f4
BASICF = $03f8
; Constants
red = $22
blu = $82
none = $07
select = $05
cslen = $400
; ====================
; Main PROG
.or $1900
jmp start
; --------------------
; Runtime DATA
csadr .ds 2
protadr .ds 2
oldcon .ds 1
rupage .ds 1
enpage .ds 1
; --------------------
; Runtime SUBS
; --------------------
; Set VBI as Immediate
setvbi
lda #$06
ldx #>vbi
ldy #<vbi
jsr SETVBV
rts
; --------------------
; No RESET Subr
dummy
tsr jsr dummy
maw protadr MEMLO
jsr setvbi
jsr setenv
rts
; --------------------
; Set Environment
setenv
lda COLOR4
cmp #red
bne setred
setblu
mib blu COLOR4
mab enpage CHBAS
jmp skip
setred
mib red COLOR4
mab rupage CHBAS
skip
rts
; -------------------
; Read CONSOL in VBI
vbi
lda CONSOL
tax ; X=CONSOL
ldy oldcon ; Y=oldcon
;
tya ; A=oldcon
cmp #none
bne exit
chkcon
txa
cmp #none
beq exit
txa
cmp #select
bne exit
jsr setenv
exit
stx oldcon
jmp SYSVBV
; ====================
; Init CODE
.or $2000
start
; Check if BASIC ON
lda BASICF
beq conti
jmp failed
;
conti
mib none oldcon
jsr setvbi
;
; PRINT prompt to screen
ofs 0
bfa prompt
bfl buflen
jsr print
;
; Filename INPUT to buffer
ofs 0
bfa fname
bfl buflen
jsr input
;
; Calculating DATA
miw $3ff op2
maw MEMLO op1
anw op1 op2 ; op1=MEMLO AND $3ff
maw op1 op2
miw $400 op1
sbw op1 op2 ; op1=spacer
maw MEMLO op2
adw op1 op2 ; op1=csadr
maw op1 csadr
miw $400 op2
adw op1 op2 ; op1=protadr
maw op1 protadr
;
; CLOSE 1
ofs 1
jsr close
;
; OPEN 1 OREAD 0 fname
ofs 1
bfa fname
lda #OREAD
ldy #$00
jsr open
chk iferr
;
; BGET 1 <adr> <len>
ofs 1
maw csadr BFADR,x
bfl cslen
jsr getby
chk iferr
;
; CLOSE 1
iferr
ofs 1
jsr close
;
mib $e0 enpage
lda 1+csadr
sta rupage
mib blu COLOR4
;
; Set TSR data
; Save DOSINI into tsr jumpadr field
maw DOSINI 1+tsr
; Set DOSINI as tsr addr
miw tsr DOSINI
; Fill MEMLO as protadr
maw protadr MEMLO
; Reinit BASIC
lda #$00
sta WARMST
jmp CARTA
;
rts ; Return to BASIC
failed
; PRINT msg to screen
ofs 0
bfa msg
bfl buflen
jsr print
rts
; --------------------
; Included SUBS
.in iolib.mae
; --------------------
; Init DATA
buflen = 40
fname .ds buflen
prompt .by CLR,"ENTER D:FONTNAME.FNT TO LOAD...",EOL
cr .by EOL
op1 .ds 2
op2 .ds 2
msg .by CLR,"ENABLE BASIC, PLEASE.",EOL
; ====================
; Setup Run Address
.or RUNAD
.wo start
;
.en
; >>> End Of File <<< ;
А можно например сделать так, чтобы READY было когда английский, а на его же месте стало ГОТОВ когда включен русский, без изменения цветов рамки.
BASIC OS похачить?(:
Приблизительно такие вещи делаются в WEDGE.
Это - программка, добавляющая команды к Бейсику.
Подменяются вектора своими и после мелкого украшательства возвращается управление Бейсику.
Разумеется, Атари, как гениальная машина, такое позволяет.
Но, лучше, написать с нуля свой интерпретатор Бейсика или "чего-надо" со встроенным русским языком.
Я - совсем не программист. Писать языки не буду.
Моя главная идея, написать управляемую стрелками, искейпом и ритён псевдографическую программку для управления любым ДОСом.
А коли на Русском, так ваще шоколад.
(СТРОЧНЫЕ буковки на Русском занимают область псевдографики. Увы! Невозможно и Русским баловаться и псевдографикой пользоваться!)
Мне нравится система бредкрамб и реально она реализована в IBM AIX в виде SMIT (Java). (НЕ smitty (Sic!)).
Там много клёвых моментов...
Если выучил сокращения, переходишь прямо к нужному пункту меню.
Если не выучил, ползаешь по меню.
Все пункты меню прописаны в текстовом файле и т.д.
(Редактируешь и добавляешь...)
Я работал с AIX и никогда не жалел.
Так сволота, уволившая меня с работы лишила меня и моего сервера!
СУДЬБА! С кем поведёшся от того и огребёшся.