mirror of
https://github.com/dschmenk/apple2pi.git
synced 2025-02-02 14:30:36 +00:00
Boot ROM working
This commit is contained in:
parent
7335ff7576
commit
14b8ff2e11
542
client/BUILD/a2pi.s
Executable file
542
client/BUILD/a2pi.s
Executable file
@ -0,0 +1,542 @@
|
||||
PTR EQU $06
|
||||
PTRL EQU $06
|
||||
PTRH EQU $07
|
||||
SPINIDX EQU $07
|
||||
BASEL EQU $28
|
||||
CSWL EQU $36
|
||||
CSWH EQU $37
|
||||
KSWL EQU $38
|
||||
KSWH EQU $39
|
||||
RNDL EQU $4E
|
||||
RNDH EQU $4F
|
||||
CEVL EQU $3CE
|
||||
CEVH EQU $3CF
|
||||
OUTVECT0 EQU $BE10
|
||||
OUTVECT3 EQU $BE16
|
||||
INVECT0 EQU $BE20
|
||||
INVECT3 EQU $BE26
|
||||
VECTOUT EQU $BE30
|
||||
VECTIN EQU $BE32
|
||||
WARMDOS EQU $BE00
|
||||
TEXTSCRN EQU $0400
|
||||
WAIT EQU $FCA8
|
||||
BELL1 EQU $FBD9
|
||||
COUT1 EQU $FDF0
|
||||
KEYBD EQU $C000
|
||||
KBCLR EQU $C010
|
||||
ANYKEY EQU $C010
|
||||
ORG $9600
|
||||
CLD
|
||||
LDA #$C1
|
||||
STA PTRH
|
||||
LDA #$00
|
||||
STA PTRL
|
||||
*
|
||||
* SEARCH SLOTS FOR MOUSE CARDS
|
||||
*
|
||||
IDCARD LDY #$05
|
||||
LDA (PTR),Y
|
||||
CMP #$38 ; PASCAL ID BYTE
|
||||
BNE NEXTCARD
|
||||
LDY #$07
|
||||
LDA (PTR),Y
|
||||
CMP #$18
|
||||
BNE NEXTCARD ; PASCAL ID BYTE
|
||||
ISMOU LDY #$0C
|
||||
LDA (PTR),Y
|
||||
CMP #$20
|
||||
BNE NEXTCARD
|
||||
LDY #$FB
|
||||
LDA (PTR),Y
|
||||
CMP #$D6
|
||||
BNE NEXTCARD
|
||||
LDA PTRH
|
||||
STA MOUROM
|
||||
AND #$07
|
||||
STA MOUINDEX
|
||||
ASL
|
||||
ASL
|
||||
ASL
|
||||
ASL
|
||||
STA MOUSLOT
|
||||
NEXTCARD INC PTRH
|
||||
LDA PTRH
|
||||
CMP #$C8
|
||||
BNE IDCARD
|
||||
*
|
||||
* GET SERIAL PORT SLOT AT $300 (768)
|
||||
*
|
||||
LDA $300
|
||||
STA SSCSLOT
|
||||
BNE ENTRY
|
||||
RTS ; NO A2PI SLOT, EXIT
|
||||
*
|
||||
* RESET ENTRYPOINT
|
||||
*
|
||||
ENTRY CLI
|
||||
*
|
||||
* INIT MOUSE
|
||||
*
|
||||
INITMOU LDX $FBC0
|
||||
BNE INITMOU1 ; NOT //C
|
||||
JSR $FB1E ; READ GAME CONTROLLER
|
||||
CPY #$FF
|
||||
BEQ INITMOU1 ; NO JOYSTICK CHECK MOUSE
|
||||
STX MOUINDEX
|
||||
STX MOUROM
|
||||
INITMOU1 LDY MOUINDEX
|
||||
BEQ INITSSC
|
||||
LDY #$19 ; INIT MOUSE
|
||||
JSR CALLMOU
|
||||
LDY #$12 ; SET MOUSE
|
||||
LDA #$01 ; TRANSPARENT MODE
|
||||
JSR CALLMOU
|
||||
LDA #$00
|
||||
STA $478
|
||||
STA $4F8
|
||||
LDA #$C0
|
||||
STA $578
|
||||
LDA #$3F
|
||||
STA $5F8
|
||||
LDY #$17 ; CLAMP MOUSE
|
||||
LDA #$00 ; X AXIS
|
||||
JSR CALLMOU
|
||||
LDY #$17 ; CLAMP MOUSE
|
||||
LDA #$01 ; Y AXIS
|
||||
JSR CALLMOU
|
||||
*
|
||||
* INIT SSC CARD FOR 115K BAUD
|
||||
*
|
||||
INITSSC LDY SSCSLOT
|
||||
LDA #$0B
|
||||
STA $C089,Y ; RESET ACIA
|
||||
STA $C08A,Y
|
||||
LDA #$10
|
||||
STA $C08B,Y ; 115K
|
||||
*
|
||||
* SYNCHRONIZE WITH PI
|
||||
*
|
||||
SYNC TYA
|
||||
ORA #$88+1
|
||||
TAY
|
||||
LDA #$80
|
||||
STA $C000-1,Y ; AVOID PHANTOM READ OF $C0XX
|
||||
INC SPINIDX
|
||||
LDA SPINIDX
|
||||
AND #$07
|
||||
TAX
|
||||
LDA SPINNER,X
|
||||
STA TEXTSCRN
|
||||
LDA #$FF
|
||||
JSR WAIT
|
||||
LDA KEYBD
|
||||
BPL CHKACK
|
||||
JMP EXIT
|
||||
CHKACK LDY SSCSLOT
|
||||
LDA $C089,Y
|
||||
AND #$08
|
||||
BEQ SYNC
|
||||
LDA $C088,Y
|
||||
CMP #$81
|
||||
BNE SYNC
|
||||
STY $301 ; TELL CALLING PROGRAM SYNC OK
|
||||
LDA #$A0
|
||||
STA TEXTSCRN
|
||||
LDA #$87
|
||||
JSR BELL1
|
||||
LDA ANYKEY
|
||||
STA KEYSTAT
|
||||
*
|
||||
* GET COUT/CIN VECTORS
|
||||
*
|
||||
JSR $C300
|
||||
LDA CSWL
|
||||
STA CHAINOUT+1
|
||||
LDA CSWH
|
||||
STA CHAINOUT+2
|
||||
JSR HOOK
|
||||
*
|
||||
* SET VECTOR FOR CHKEVENT
|
||||
*
|
||||
; LDX #<CHKEVENT
|
||||
; STX CEVL
|
||||
; LDX #>CHKEVENT
|
||||
; STX CEVH
|
||||
*
|
||||
* SET UP RESET VECTOR
|
||||
*
|
||||
LDA RESET+1
|
||||
BNE ISRESET
|
||||
LDA $3F2
|
||||
STA RESET
|
||||
LDA $3F3
|
||||
STA RESET+1
|
||||
LDA #<ENTRY
|
||||
STA $3F2
|
||||
LDA #>ENTRY
|
||||
STA $3F3
|
||||
EOR #$A5
|
||||
STA $3F4
|
||||
RTS
|
||||
ISRESET LDX #$FF
|
||||
TXS
|
||||
JMP WARMDOS
|
||||
*
|
||||
* CHAR OUT HOOK - CHECK ONCE FOR A2PI EVENTS
|
||||
*
|
||||
COUTPI PHP
|
||||
CLI
|
||||
PHA
|
||||
STX SAVEX
|
||||
STY SAVEY
|
||||
LDA #$98
|
||||
JSR SENDACC
|
||||
PLA
|
||||
PHA
|
||||
JSR SENDACC
|
||||
JSR SENDACC
|
||||
LDA CHRIN
|
||||
BNE COUTNXT ; SKIP IF INPUT CHAR PENDING
|
||||
LDA KEYBD
|
||||
CMP #$83 ; SKIP CTRL-C
|
||||
BEQ COUTNXT
|
||||
CMP #$93 ; SKIP CTRL-S
|
||||
BEQ COUTNXT
|
||||
LDA #$01
|
||||
STA WAITEV
|
||||
JSR CHKEVENT ; CHECK ON EVENTS
|
||||
BCC COUTNXT
|
||||
STA CHRIN
|
||||
COUTNXT PLA
|
||||
LDY SAVEY
|
||||
LDX SAVEX
|
||||
PLP
|
||||
STA SAVEY
|
||||
CHAINOUT JSR COUT1
|
||||
*
|
||||
* SET INPUT/OUTPUT VECTORS
|
||||
*
|
||||
HOOK STX SAVEX
|
||||
LDX #<COUTPI
|
||||
STX CSWL
|
||||
LDX #>COUTPI
|
||||
STX CSWH
|
||||
LDX #<CINPI
|
||||
STX KSWL
|
||||
LDX #>CINPI
|
||||
STX KSWH
|
||||
LDX SAVEX
|
||||
RTS
|
||||
*
|
||||
* CHAR IN HOOK - EVENT LOOP FOR A2PI DAEMON
|
||||
*
|
||||
CINPI STA (BASEL),Y ; RESTORE CURSOR
|
||||
LDA CHRIN
|
||||
BNE CINPIEX
|
||||
STX SAVEX
|
||||
LDA #$5F ; PRINT _
|
||||
JSR CHAINOUT
|
||||
LDA #$88 ; BACKSAPCE
|
||||
JSR CHAINOUT
|
||||
PHP
|
||||
CLI
|
||||
EVENTLP INC RNDL ; UPDATE RND LIKE ANY PROPER RDKEY
|
||||
BNE EVENTLP1
|
||||
INC RNDH
|
||||
EVENTLP1 JSR CHKEVENT
|
||||
BCC EVENTLP
|
||||
PLP ; HAVE CHAR FROM A2PI DAEMON
|
||||
LDX SAVEX
|
||||
CINPIEX LDY #$00
|
||||
STY CHRIN
|
||||
RTS
|
||||
*
|
||||
* SEND MODIFIER (OPEN & CLOSED APPLE) KEYS/PADDLE BUTTONS
|
||||
*
|
||||
SENDMOD LDA $C062
|
||||
ASL
|
||||
LDA $C061
|
||||
ROR
|
||||
AND #$C0 ; FALL THROUGH
|
||||
*
|
||||
* ACIA SEND BYTE IN ACCUMULATOR
|
||||
*
|
||||
SENDACC PHA
|
||||
LDA SSCSLOT
|
||||
ORA #$89+1
|
||||
TAY
|
||||
SENDWT LDA $C000-1,Y
|
||||
AND #$10
|
||||
BEQ SENDWT
|
||||
PLA
|
||||
STA $C000-2,Y ; AVOID PHANTOM READ FROM $C0XX
|
||||
RTS
|
||||
*
|
||||
* ACIA RECEIVE BYTE IN ACCUMULATOR
|
||||
*
|
||||
RECVACC LDA SSCSLOT
|
||||
ORA #$89+1
|
||||
TAY
|
||||
RECVWT LDA $C000-1,Y
|
||||
AND #$08
|
||||
BEQ RECVWT
|
||||
LDA $C000-2,Y
|
||||
RTS
|
||||
*
|
||||
* CHECK INPUT STATE FOR CHANGE
|
||||
*
|
||||
CHKEVENT LDA ANYKEY ; CHECK FOR KEY PRESS/RELEASE
|
||||
CMP KEYSTAT
|
||||
BNE SENDKEY
|
||||
LDA SSCSLOT ; CHECK FOR INPUT TO ACIA
|
||||
ORA #$89+1
|
||||
TAY
|
||||
LDA $C000-1,Y
|
||||
AND #$08
|
||||
BEQ CHKMOU
|
||||
LDA $C000-2,Y
|
||||
JMP HOSTREQ
|
||||
CHKMOU DEC WAITEV ; CHECK FOR MOUSE UPDATE
|
||||
BEQ UPDTMOU
|
||||
EXEVENT CLC
|
||||
RTS
|
||||
*
|
||||
* KEYBOARD EVENT
|
||||
*
|
||||
SENDKEY TAX
|
||||
BPL SENDKBEV
|
||||
LDA #$80 ; DEBOUNCE KEYPRESS
|
||||
JSR WAIT
|
||||
LDX ANYKEY
|
||||
CPX #$FF
|
||||
BNE SENDKBEV
|
||||
LDA $C062
|
||||
BPL SENDKBEV
|
||||
LDA $C061
|
||||
BPL SENDKBEV
|
||||
UNHOOK JSR EXIT
|
||||
LDA #$00
|
||||
STA RESET
|
||||
STA RESET+1
|
||||
LDA #$0D
|
||||
SEC
|
||||
RTS
|
||||
SENDKBEV STX KEYSTAT
|
||||
LDA #$82 ; KBEVENT CODE
|
||||
JSR SENDACC
|
||||
JSR SENDMOD
|
||||
TXA
|
||||
CLC
|
||||
JMP SENDACC
|
||||
*
|
||||
* MOUSE EVENTS
|
||||
*
|
||||
UPDTMOU LDY #$14 ; READ MOUSE
|
||||
LDA #$80
|
||||
JSR CALLMOU
|
||||
BCC EXMOU
|
||||
LDY MOUINDEX
|
||||
LDA $478,Y
|
||||
STA MOUXSTAT
|
||||
LDA $4F8,Y
|
||||
STA MOUYSTAT
|
||||
LDA $778,Y
|
||||
PHA
|
||||
LDY #$15 ; CLEAR MOUSE
|
||||
LDA #$80
|
||||
JSR CALLMOU
|
||||
LDA MOUXSTAT
|
||||
ORA MOUYSTAT
|
||||
BEQ CHKBTTN
|
||||
LDA #$84 ; SEND MOUSE POSITION
|
||||
JSR SENDACC
|
||||
LDA MOUXSTAT
|
||||
JSR SENDACC
|
||||
LDA MOUYSTAT
|
||||
JSR SENDACC
|
||||
CHKBTTN LDY MOUINDEX
|
||||
PLA
|
||||
STA $778,Y ; GS CLEARS THIS IN CLEAR MOUSE CALL
|
||||
AND #$80
|
||||
CMP BTTNSTAT
|
||||
BEQ EXMOU
|
||||
SENDBTTN STA BTTNSTAT
|
||||
LDA #$86
|
||||
JSR SENDACC
|
||||
JSR SENDMOD
|
||||
LDA BTTNSTAT
|
||||
JSR SENDACC
|
||||
EXMOU CLC
|
||||
RTS
|
||||
*
|
||||
* CALL MOUSE FIRMWARE
|
||||
*
|
||||
CALLMOU LDX MOUROM
|
||||
BEQ EXMOU
|
||||
PHA
|
||||
LDA PTRL ; SAVE ZERO PAGE LOCATIONS
|
||||
STA SAVEZP
|
||||
LDA PTRH
|
||||
STA SAVEZP+1
|
||||
LDA #$00
|
||||
STA PTRL
|
||||
STX PTRH
|
||||
LDA (PTR),Y
|
||||
STA PTRL
|
||||
PLA
|
||||
LDX MOUROM
|
||||
LDY MOUSLOT
|
||||
PHP
|
||||
SEI
|
||||
JSR IJMP
|
||||
PLP
|
||||
LDA SAVEZP ; RESTORE ZERO PAGE LOCATIONS
|
||||
STA PTRL
|
||||
LDA SAVEZP+1
|
||||
STA PTRH
|
||||
SEC ; MOUSE PRESENT FLAG
|
||||
RTS
|
||||
*
|
||||
* HOST REQUEST/RESPONSE HANDLING
|
||||
*
|
||||
RECVADDR JSR SENDACC ; ECHO REQUEST
|
||||
JSR SENDACC ; DUMMY VALUE
|
||||
JSR SENDACC ; DUMMY VALUE
|
||||
JSR RECVACC
|
||||
STA PTRL
|
||||
TXA ; ACK
|
||||
JSR SENDACC
|
||||
JSR RECVACC
|
||||
STA PTRH
|
||||
TXA ; ACK
|
||||
JMP SENDACC
|
||||
RECVCNT JSR RECVACC
|
||||
STA CNTL
|
||||
TXA ; ACK
|
||||
JSR SENDACC
|
||||
JSR RECVACC
|
||||
STA CNTH ; INC FOR LOOP CONTROL
|
||||
INC CNTH
|
||||
TXA ; ACK
|
||||
JMP SENDACC
|
||||
HOSTREQ LDX PTRL ; SAVE ZERO PAGE LOCATIONS
|
||||
STX SAVEZP
|
||||
LDX PTRH
|
||||
STX SAVEZP+1
|
||||
READREQ CMP #$90 ; READ BYTES
|
||||
BNE WRITEREQ
|
||||
LDX #$91
|
||||
JSR RECVADDR
|
||||
JSR RECVCNT
|
||||
LDX #$00
|
||||
READLP LDA (PTR,X)
|
||||
JSR SENDACC
|
||||
INC PTRL
|
||||
BNE READDEC
|
||||
INC PTRH
|
||||
READDEC DEC CNTL
|
||||
BNE READLP
|
||||
DEC CNTH
|
||||
BNE READLP
|
||||
BEQ OKREQ
|
||||
WRITEREQ CMP #$92 ; WRITE BYTES
|
||||
BNE CALLREQ
|
||||
SEI ; DISABLE INTERRUPTS
|
||||
LDX #$93
|
||||
JSR RECVADDR
|
||||
JSR RECVCNT
|
||||
LDX #$00
|
||||
WRITELP JSR RECVACC
|
||||
STA (PTR,X)
|
||||
INC PTRL
|
||||
BNE WRITEDEC
|
||||
INC PTRH
|
||||
WRITEDEC DEC CNTL
|
||||
BNE WRITELP
|
||||
DEC CNTH
|
||||
BNE WRITELP
|
||||
BEQ OKREQ
|
||||
CALLREQ CMP #$94
|
||||
BEQ CALLREQ1
|
||||
CMP #$9A
|
||||
BNE CINREQ
|
||||
CALLREQ1 TAX
|
||||
INX
|
||||
JSR RECVADDR
|
||||
JSR IJMP
|
||||
OKREQ LDX #$9E ; REQ COMPLETE OK
|
||||
SENDCOMP CLI ; ENABLE INTERRUPTS
|
||||
PHP
|
||||
PHA
|
||||
TXA
|
||||
JSR SENDACC
|
||||
PLA
|
||||
JSR SENDACC ; ACCUM VALUE
|
||||
PLA
|
||||
JSR SENDACC ; FLAGS VALUE
|
||||
LDA SAVEZP ; RESTORE ZERO PAGE LOCATIONS
|
||||
STA PTRL
|
||||
LDA SAVEZP+1
|
||||
STA PTRH
|
||||
EXREQ CLC
|
||||
RTS
|
||||
CINREQ CMP #$96
|
||||
BNE RESYNC
|
||||
LDX #$97
|
||||
JSR RECVADDR
|
||||
LDA #$9E ; REQ COMPLETE OK
|
||||
JSR SENDACC
|
||||
LDA PTRL
|
||||
LDX SAVEZP ; RESTORE ZERO PAGE LOCATIONS
|
||||
STX PTRL
|
||||
LDX SAVEZP+1
|
||||
STX PTRH
|
||||
JSR SENDACC ; ECHO VALUE
|
||||
JSR SENDACC ; ECHO VALUE
|
||||
SEC ; RETURN CHAR TO RDKEY
|
||||
RTS
|
||||
RESYNC CMP #$80 ; RESYNC WITH HOST
|
||||
BNE BADREQ
|
||||
JSR SENDACC ; ECHO
|
||||
JSR RECVACC
|
||||
CMP #$81
|
||||
BEQ EXREQ
|
||||
* JMP UNHOOK
|
||||
BNE RESYNC
|
||||
BADREQ LDX #$9F ; REQ BAD
|
||||
BNE SENDCOMP
|
||||
*
|
||||
* CLEANUP
|
||||
*
|
||||
EXIT LDA KBCLR
|
||||
JSR $C300
|
||||
LDA RESET+1
|
||||
BEQ EX1
|
||||
STA $3F3
|
||||
EOR #$A5
|
||||
STA $3F4
|
||||
LDA RESET
|
||||
STA $3F2
|
||||
EX1 LDY #$12 ; SET MOUSE
|
||||
LDA #$00 ; DISABLE MOUSE
|
||||
STA RESET
|
||||
STA RESET+1
|
||||
JMP CALLMOU
|
||||
IJMP JMP (PTR)
|
||||
MOUROM DB 0
|
||||
MOUSLOT DB 0
|
||||
SSCSLOT DB 0
|
||||
MOUINDEX DB 0
|
||||
MOUXSTAT DB 0
|
||||
MOUYSTAT DB 0
|
||||
BTTNSTAT DB 0
|
||||
KEYSTAT DB 0
|
||||
WAITEV DB 0
|
||||
CNTL DB 0
|
||||
CNTH DB 0
|
||||
RESET DW 0
|
||||
SAVEZP DW 0
|
||||
SAVEX DB 0
|
||||
SAVEY DB 0
|
||||
CHRIN DB 0
|
||||
SPINNER ASC "|\-/|\-/"
|
569
client/BUILD/a2pluspi.s
Executable file
569
client/BUILD/a2pluspi.s
Executable file
@ -0,0 +1,569 @@
|
||||
PTR EQU $06
|
||||
PTRL EQU $06
|
||||
PTRH EQU $07
|
||||
SPINIDX EQU $07
|
||||
BASEL EQU $28
|
||||
CSWL EQU $36
|
||||
CSWH EQU $37
|
||||
KSWL EQU $38
|
||||
KSWH EQU $39
|
||||
RNDL EQU $4E
|
||||
RNDH EQU $4F
|
||||
CEVL EQU $3CE
|
||||
CEVH EQU $3CF
|
||||
OUTVECT0 EQU $BE10
|
||||
OUTVECT3 EQU $BE16
|
||||
INVECT0 EQU $BE20
|
||||
INVECT3 EQU $BE26
|
||||
VECTOUT EQU $BE30
|
||||
VECTIN EQU $BE32
|
||||
WARMDOS EQU $BE00
|
||||
TEXTSCRN EQU $0400
|
||||
WAIT EQU $FCA8
|
||||
BELL1 EQU $FBD9
|
||||
COUT1 EQU $FDF0
|
||||
KEYIN EQU $FD1B
|
||||
KEYBD EQU $C000
|
||||
KBCLR EQU $C010
|
||||
ANYKEY EQU $C010
|
||||
ORG $9600
|
||||
CLD
|
||||
LDA #$C1
|
||||
STA PTRH
|
||||
LDA #$00
|
||||
STA PTRL
|
||||
*
|
||||
* SEARCH SLOTS FOR MOUSE AND SUPERSERIAL CARDS
|
||||
*
|
||||
IDCARD LDY #$05
|
||||
LDA (PTR),Y
|
||||
CMP #$38 ; PASCAL ID BYTE
|
||||
BNE NEXTCARD
|
||||
LDY #$07
|
||||
LDA (PTR),Y
|
||||
CMP #$18
|
||||
BNE NEXTCARD ; PASCAL ID BYTE
|
||||
ISMOU LDY #$0C
|
||||
LDA (PTR),Y
|
||||
CMP #$20
|
||||
BNE NEXTCARD
|
||||
LDY #$FB
|
||||
LDA (PTR),Y
|
||||
CMP #$D6
|
||||
BNE NEXTCARD
|
||||
LDA PTRH
|
||||
STA MOUROM
|
||||
AND #$07
|
||||
STA MOUINDEX
|
||||
ASL
|
||||
ASL
|
||||
ASL
|
||||
ASL
|
||||
STA MOUSLOT
|
||||
NEXTCARD INC PTRH
|
||||
LDA PTRH
|
||||
CMP #$C8
|
||||
BNE IDCARD
|
||||
*
|
||||
* SET SERIAL PORT SLOT AT $300 (768)
|
||||
*
|
||||
LDA $300
|
||||
STA SSCSLOT
|
||||
BNE ENTRY
|
||||
RTS ; NO A2PI SLOT, EXIT
|
||||
*
|
||||
* RESET ENTRYPOINT
|
||||
*
|
||||
ENTRY CLI
|
||||
*
|
||||
* INIT MOUSE
|
||||
*
|
||||
INITMOU LDY MOUINDEX
|
||||
BEQ INITSSC
|
||||
LDY #$19 ; INIT MOUSE
|
||||
JSR CALLMOU
|
||||
LDY #$12 ; SET MOUSE
|
||||
LDA #$01 ; TRANSPARENT MODE
|
||||
JSR CALLMOU
|
||||
LDA #$00
|
||||
STA $478
|
||||
STA $4F8
|
||||
LDA #$C0
|
||||
STA $578
|
||||
LDA #$3F
|
||||
STA $5F8
|
||||
LDY #$17 ; CLAMP MOUSE
|
||||
LDA #$00 ; X AXIS
|
||||
JSR CALLMOU
|
||||
LDY #$17 ; CLAMP MOUSE
|
||||
LDA #$01 ; Y AXIS
|
||||
JSR CALLMOU
|
||||
*
|
||||
* INIT SSC CARD FOR 115K BAUD
|
||||
*
|
||||
INITSSC LDY SSCSLOT
|
||||
LDA #$0B
|
||||
STA $C089,Y ; RESET ACIA
|
||||
STA $C08A,Y
|
||||
LDA #$10
|
||||
STA $C08B,Y ; 115K
|
||||
*
|
||||
* SYNCHRONIZE WITH PI
|
||||
*
|
||||
SYNC TYA
|
||||
ORA #$88+1
|
||||
TAY
|
||||
LDA #$80
|
||||
STA $C000-1,Y ; AVOID PHANTOM READ OF $C0XX
|
||||
LDA #$FF
|
||||
JSR WAIT
|
||||
LDA KEYBD
|
||||
BPL CHKACK
|
||||
JMP EXIT
|
||||
CHKACK LDY SSCSLOT
|
||||
LDA $C089,Y
|
||||
AND #$08
|
||||
BEQ SYNC
|
||||
LDA $C088,Y
|
||||
CMP #$81
|
||||
BNE SYNC
|
||||
STY $301 ; LET CALLING PROGRAM KNOW SYNC OK
|
||||
LDA #$87
|
||||
JSR BELL1
|
||||
JSR HOOK
|
||||
*
|
||||
* SET UP RESET VECTOR
|
||||
*
|
||||
LDA RESET+1
|
||||
BNE ISRESET
|
||||
LDA $3F2
|
||||
STA RESET
|
||||
LDA $3F3
|
||||
STA RESET+1
|
||||
LDA #<ENTRY
|
||||
STA $3F2
|
||||
LDA #>ENTRY
|
||||
STA $3F3
|
||||
EOR #$A5
|
||||
STA $3F4
|
||||
RTS
|
||||
ISRESET LDX #$FF
|
||||
TXS
|
||||
JMP WARMDOS
|
||||
*
|
||||
* CHAR OUT HOOK - CHECK ONCE FOR A2PI EVENTS
|
||||
*
|
||||
COUTPI PHP
|
||||
CLI
|
||||
PHA
|
||||
STX SAVEX
|
||||
STY SAVEY
|
||||
LDA #$98
|
||||
JSR SENDACC
|
||||
PLA
|
||||
PHA
|
||||
JSR SENDACC
|
||||
JSR SENDACC
|
||||
LDA CHRIN
|
||||
BNE COUTNXT ; SKIP IF INPUT CHAR PENDING
|
||||
LDA KEYBD
|
||||
CMP #$83 ; SKIP CTRL-C
|
||||
BEQ COUTNXT
|
||||
CMP #$93 ; SKIP CTRL-S
|
||||
BEQ COUTNXT
|
||||
LDA #$01
|
||||
STA WAITEV
|
||||
JSR CHKEVENT ; CHECK ON EVENTS
|
||||
BCC COUTNXT
|
||||
STA CHRIN
|
||||
COUTNXT PLA
|
||||
LDY SAVEY
|
||||
LDX SAVEX
|
||||
PLP
|
||||
STA SAVEY
|
||||
CHAINOUT JSR COUT1
|
||||
*
|
||||
* SET INPUT/OUTPUT VECTORS
|
||||
*
|
||||
HOOK STX SAVEX
|
||||
LDX #<COUTPI
|
||||
STX CSWL
|
||||
LDX #>COUTPI
|
||||
STX CSWH
|
||||
LDX #<CINPI
|
||||
STX KSWL
|
||||
LDX #>CINPI
|
||||
STX KSWH
|
||||
LDX SAVEX
|
||||
RTS
|
||||
*
|
||||
* CHAR IN HOOK - EVENT LOOP FOR A2PI DAEMON
|
||||
*
|
||||
CINPI STA (BASEL),Y ; RESTORE CURSOR
|
||||
LDA CHRIN
|
||||
BNE CINPIEX
|
||||
STX SAVEX
|
||||
LDA #$5F ; PRINT _
|
||||
JSR CHAINOUT
|
||||
LDA #$88 ; BACKSAPCE
|
||||
JSR CHAINOUT
|
||||
PHP
|
||||
CLI
|
||||
EVENTLP INC RNDL ; UPDATE RND LIKE ANY PROPER RDKEY
|
||||
BNE EVENTLP1
|
||||
INC RNDH
|
||||
EVENTLP1 JSR CHKEVENT
|
||||
BCC EVENTLP
|
||||
PLP ; HAVE CHAR FROM A2PI DAEMON
|
||||
LDX SAVEX
|
||||
CINPIEX LDY #$00
|
||||
STY CHRIN
|
||||
RTS
|
||||
*
|
||||
* SEND MODIFIER (OPEN & CLOSED APPLE) KEYS/PADDLE BUTTONS
|
||||
*
|
||||
SENDMOD LDA $C062
|
||||
ASL
|
||||
LDA $C061
|
||||
ROR
|
||||
AND #$C0 ; FALL THROUGH
|
||||
*
|
||||
* ACIA SEND BYTE IN ACCUMULATOR
|
||||
*
|
||||
SENDACC PHA
|
||||
LDA SSCSLOT
|
||||
ORA #$89+1
|
||||
TAY
|
||||
SENDWT LDA $C000-1,Y
|
||||
AND #$10
|
||||
BEQ SENDWT
|
||||
PLA
|
||||
STA $C000-2,Y ; AVOID PHANTOM READ FROM $C0XX
|
||||
RTS
|
||||
*
|
||||
* ACIA RECEIVE BYTE IN ACCUMULATOR
|
||||
*
|
||||
RECVACC LDA SSCSLOT
|
||||
ORA #$89+1
|
||||
TAY
|
||||
RECVWT LDA $C000-1,Y
|
||||
AND #$08
|
||||
BEQ RECVWT
|
||||
LDA $C000-2,Y
|
||||
RTS
|
||||
*
|
||||
* CHECK INPUT STATE FOR CHANGE
|
||||
*
|
||||
CHKEVENT LDA KEYBD ; CHECK FOR KEY PRESS
|
||||
BMI SENDKEY
|
||||
LDA SSCSLOT ; CHECK FOR INPUT TO ACIA
|
||||
ORA #$89+1
|
||||
TAY
|
||||
LDA $C000-1,Y
|
||||
AND #$08
|
||||
BEQ CHKMOU
|
||||
LDA $C000-2,Y
|
||||
JMP HOSTREQ
|
||||
CHKMOU DEC WAITEV ; CHECK FOR MOUSE UPDATE
|
||||
BEQ UPDTMOU
|
||||
EXEVENT CLC
|
||||
RTS
|
||||
*
|
||||
* KEYBOARD EVENT
|
||||
*
|
||||
FROMKEY DB $DE ; ^ -> N
|
||||
DB $C0 ; @ -> P
|
||||
DB $DD ; ] -> M
|
||||
DB $9E ; CTRL-^ -> ^
|
||||
DB $80 ; CTRL-@ -> @
|
||||
DB $88 ; <- -> RUB
|
||||
DB $95 ; -> -> TAB
|
||||
DB $B0 ; 0 -> _
|
||||
DB $89 ; CTRL-I -> {
|
||||
DB $8F ; CTRL-O -> }
|
||||
DB $8C ; CTRL-L -> |
|
||||
DB $8A ; CTRL-J -> [
|
||||
DB $8B ; CTRL-K -> ]
|
||||
DB $9D ; CTRL-[ -> \
|
||||
DB $9A ; CTRL-Z -> ~
|
||||
DB $98 ; CTRL-X -> `
|
||||
DB $91 ; CTRL-Q -> NUL
|
||||
TOKEY DB $CE ; N
|
||||
DB $D0 ; P
|
||||
DB $CD ; M
|
||||
DB $DE ; ^
|
||||
DB $C0 ; @
|
||||
DB $FF ; RUB
|
||||
DB $89 ; TAB
|
||||
DB $DF ; _
|
||||
DB $FB ; {
|
||||
DB $FD ; }
|
||||
DB $FC ; |
|
||||
DB $DB ; [
|
||||
DB $DD ; ]
|
||||
DB $DC ; \
|
||||
DB $FE ; ~
|
||||
DB $E0 ; `
|
||||
DB $80 ; NUL
|
||||
SENDKEY STA KBCLR
|
||||
LDY $C063
|
||||
BMI TOLOWER
|
||||
LDX #TOKEY-FROMKEY
|
||||
CMP #$81 ; SHIFT+CTRL-A = CAPS LOCK
|
||||
BNE ISESC
|
||||
EOR CAPSLOCK
|
||||
STA CAPSLOCK
|
||||
EXKBEV CLC
|
||||
RTS
|
||||
ISESC CMP #$9B ; ESC KEY
|
||||
BNE MAPKEY
|
||||
JSR EXIT
|
||||
LDA #$8D
|
||||
SEC
|
||||
RTS
|
||||
MAPKEY CMP FROMKEY,X
|
||||
BEQ SWAPKEY
|
||||
DEX
|
||||
BPL MAPKEY
|
||||
BMI SENDKBEV
|
||||
SWAPKEY LDA TOKEY,X
|
||||
BNE SENDKBEV
|
||||
TOLOWER LDY CAPSLOCK
|
||||
BNE SENDKBEV
|
||||
CMP #$C1 ; 'A'
|
||||
BCC SENDKBEV
|
||||
CMP #$DB ; 'Z'
|
||||
BCS SENDKBEV
|
||||
ADC #$20
|
||||
SENDKBEV TAX
|
||||
LDA #$82 ; KBEVENT CODE
|
||||
JSR SENDACC
|
||||
JSR SENDMOD
|
||||
TXA ; KEY PRESSED
|
||||
JSR SENDACC
|
||||
LDA #$82 ; KBEVENT CODE
|
||||
JSR SENDACC
|
||||
JSR SENDMOD
|
||||
TXA
|
||||
AND #$7F ; KEY RELEASED
|
||||
CLC
|
||||
JMP SENDACC
|
||||
*
|
||||
* MOUSE EVENTS
|
||||
*
|
||||
UPDTMOU LDY #$14 ; READ MOUSE
|
||||
LDA #$80
|
||||
JSR CALLMOU
|
||||
BCC EXMOU
|
||||
LDY MOUINDEX
|
||||
LDA $478,Y
|
||||
STA MOUXSTAT
|
||||
LDA $4F8,Y
|
||||
STA MOUYSTAT
|
||||
LDA $778,Y
|
||||
PHA
|
||||
LDY #$15 ; CLEAR MOUSE
|
||||
LDA #$80
|
||||
JSR CALLMOU
|
||||
LDA MOUXSTAT
|
||||
ORA MOUYSTAT
|
||||
BEQ CHKBTTN
|
||||
LDA #$84 ; SEND MOUSE POSITION
|
||||
JSR SENDACC
|
||||
LDA MOUXSTAT
|
||||
JSR SENDACC
|
||||
LDA MOUYSTAT
|
||||
JSR SENDACC
|
||||
CHKBTTN LDY MOUINDEX
|
||||
PLA
|
||||
STA $778,Y ; GS CLEARS THIS IN CLEAR MOUSE CALL
|
||||
AND #$80
|
||||
CMP BTTNSTAT
|
||||
BEQ EXMOU
|
||||
SENDBTTN STA BTTNSTAT
|
||||
LDA #$86
|
||||
JSR SENDACC
|
||||
JSR SENDMOD
|
||||
LDA BTTNSTAT
|
||||
JSR SENDACC
|
||||
EXMOU CLC
|
||||
RTS
|
||||
*
|
||||
* CALL MOUSE FIRMWARE
|
||||
*
|
||||
CALLMOU LDX MOUROM
|
||||
BEQ EXMOU
|
||||
PHA
|
||||
LDA PTRL ; SAVE ZERO PAGE LOCATIONS
|
||||
STA SAVEZP
|
||||
LDA PTRH
|
||||
STA SAVEZP+1
|
||||
LDA #$00
|
||||
STA PTRL
|
||||
STX PTRH
|
||||
LDA (PTR),Y
|
||||
STA PTRL
|
||||
PLA
|
||||
LDX MOUROM
|
||||
LDY MOUSLOT
|
||||
PHP
|
||||
SEI
|
||||
JSR IJMP
|
||||
PLP
|
||||
LDA SAVEZP ; RESTORE ZERO PAGE LOCATIONS
|
||||
STA PTRL
|
||||
LDA SAVEZP+1
|
||||
STA PTRH
|
||||
SEC ; MOUSE PRESENT FLAG
|
||||
RTS
|
||||
*
|
||||
* HOST REQUEST/RESPONSE HANDLING
|
||||
*
|
||||
RECVADDR JSR SENDACC ; ECHO REQUEST
|
||||
JSR SENDACC ; DUMMY VALUE
|
||||
JSR SENDACC ; DUMMY VALUE
|
||||
JSR RECVACC
|
||||
STA PTRL
|
||||
TXA ; ACK
|
||||
JSR SENDACC
|
||||
JSR RECVACC
|
||||
STA PTRH
|
||||
TXA ; ACK
|
||||
JMP SENDACC
|
||||
RECVCNT JSR RECVACC
|
||||
STA CNTL
|
||||
TXA ; ACK
|
||||
JSR SENDACC
|
||||
JSR RECVACC
|
||||
STA CNTH ; INC FOR LOOP CONTROL
|
||||
INC CNTH
|
||||
TXA ; ACK
|
||||
JMP SENDACC
|
||||
HOSTREQ LDX PTRL ; SAVE ZERO PAGE LOCATIONS
|
||||
STX SAVEZP
|
||||
LDX PTRH
|
||||
STX SAVEZP+1
|
||||
READREQ CMP #$90 ; READ BYTES
|
||||
BNE WRITEREQ
|
||||
LDX #$91
|
||||
JSR RECVADDR
|
||||
JSR RECVCNT
|
||||
LDX #$00
|
||||
READLP LDA (PTR,X)
|
||||
JSR SENDACC
|
||||
INC PTRL
|
||||
BNE READDEC
|
||||
INC PTRH
|
||||
READDEC DEC CNTL
|
||||
BNE READLP
|
||||
DEC CNTH
|
||||
BNE READLP
|
||||
BEQ OKREQ
|
||||
WRITEREQ CMP #$92 ; WRITE BYTES
|
||||
BNE CALLREQ
|
||||
SEI ; DISABLE INTERRUPTS
|
||||
LDX #$93
|
||||
JSR RECVADDR
|
||||
JSR RECVCNT
|
||||
LDX #$00
|
||||
WRITELP JSR RECVACC
|
||||
STA (PTR,X)
|
||||
INC PTRL
|
||||
BNE WRITEDEC
|
||||
INC PTRH
|
||||
WRITEDEC DEC CNTL
|
||||
BNE WRITELP
|
||||
DEC CNTH
|
||||
BNE WRITELP
|
||||
BEQ OKREQ
|
||||
CALLREQ CMP #$94
|
||||
BEQ CALLREQ1
|
||||
CMP #$9A
|
||||
BNE CINREQ
|
||||
CALLREQ1 TAX
|
||||
INX
|
||||
JSR RECVADDR
|
||||
JSR IJMP
|
||||
OKREQ LDX #$9E ; REQ COMPLETE OK
|
||||
SENDCOMP CLI ; ENABLE INTERRUPTS
|
||||
PHP
|
||||
PHA
|
||||
TXA
|
||||
JSR SENDACC
|
||||
PLA
|
||||
JSR SENDACC ; ACCUM VALUE
|
||||
PLA
|
||||
JSR SENDACC ; FLAGS VALUE
|
||||
LDA SAVEZP ; RESTORE ZERO PAGE LOCATIONS
|
||||
STA PTRL
|
||||
LDA SAVEZP+1
|
||||
STA PTRH
|
||||
EXREQ CLC
|
||||
RTS
|
||||
CINREQ CMP #$96
|
||||
BNE RESYNC
|
||||
LDX #$97
|
||||
JSR RECVADDR
|
||||
LDA #$9E ; REQ COMPLETE OK
|
||||
JSR SENDACC
|
||||
LDA PTRL
|
||||
LDX SAVEZP ; RESTORE ZERO PAGE LOCATIONS
|
||||
STX PTRL
|
||||
LDX SAVEZP+1
|
||||
STX PTRH
|
||||
JSR SENDACC ; ECHO VALUE
|
||||
JSR SENDACC ; ECHO VALUE
|
||||
SEC ; RETURN CHAR TO RDKEY
|
||||
RTS
|
||||
RESYNC CMP #$80 ; RESYNC WITH HOST
|
||||
BNE BADREQ
|
||||
JSR SENDACC ; ECHO
|
||||
JSR RECVACC
|
||||
CMP #$81
|
||||
BEQ EXREQ
|
||||
* JMP UNHOOK
|
||||
BNE RESYNC
|
||||
BADREQ LDX #$9F ; REQ BAD
|
||||
BNE SENDCOMP
|
||||
*
|
||||
* CLEANUP
|
||||
*
|
||||
EXIT LDA KBCLR
|
||||
;JSR $C300
|
||||
LDX #<COUT1
|
||||
STX CSWL
|
||||
LDX #>COUT1
|
||||
STX CSWH
|
||||
LDX #<KEYIN
|
||||
STX KSWL
|
||||
LDX #>KEYIN
|
||||
STX KSWH
|
||||
LDA RESET+1
|
||||
BEQ EX1
|
||||
STA $3F3
|
||||
EOR #$A5
|
||||
STA $3F4
|
||||
LDA RESET
|
||||
STA $3F2
|
||||
EX1 LDY #$12 ; SET MOUSE
|
||||
LDA #$00 ; DISABLE MOUSE
|
||||
STA RESET
|
||||
STA RESET+1
|
||||
JMP CALLMOU
|
||||
IJMP JMP (PTR)
|
||||
MOUROM DB 0
|
||||
MOUSLOT DB 0
|
||||
SSCSLOT DB 0
|
||||
MOUINDEX DB 0
|
||||
MOUXSTAT DB 0
|
||||
MOUYSTAT DB 0
|
||||
BTTNSTAT DB 0
|
||||
CAPSLOCK DB 0
|
||||
WAITEV DB 0
|
||||
CNTL DB 0
|
||||
CNTH DB 0
|
||||
RESET DW 0
|
||||
SAVEZP DW 0
|
||||
SAVEX DB 0
|
||||
SAVEY DB 0
|
||||
CHRIN DB 0
|
@ -11,11 +11,11 @@ BINTYPE = \#060000
|
||||
SYSTYPE = \#ff0000
|
||||
TXTTYPE = \#040000
|
||||
|
||||
all: $(ROM) $(VDRV) $(VCLK)
|
||||
|
||||
clean:
|
||||
-rm $(ROM) $(VDRV) $(VCLK) *.o *~
|
||||
|
||||
all: $(ROM) $(VDRV) $(VCLK)
|
||||
|
||||
$(ROM): rom.s
|
||||
ca65 rom.s -o rom.o
|
||||
ld65 -o $(ROM) -C rom.cfg rom.o
|
||||
|
@ -235,15 +235,13 @@ DOCMD: LDA PDUNIT
|
||||
ROL
|
||||
ASL
|
||||
ORA #$A0
|
||||
LDX PDBLKL
|
||||
LDY PDBLKH
|
||||
PHP
|
||||
FIXUP5: STA PAD0
|
||||
SEI
|
||||
JSR SENDACC
|
||||
TXA
|
||||
LDA PDBLKL
|
||||
JSR SENDACC
|
||||
TYA
|
||||
LDA PDBLKH
|
||||
JSR SENDACC
|
||||
CHKACK: JSR RECVACC
|
||||
TAX
|
||||
|
127
pidrive/rom.s
127
pidrive/rom.s
@ -1,6 +1,13 @@
|
||||
.DEFINE EQU =
|
||||
.DEFINE EQU =
|
||||
.DEFINE DB .BYTE
|
||||
.DEFINE DW .WORD
|
||||
.DEFINE PAGE .ALIGN 256
|
||||
.DEFINE ORG .ORG
|
||||
.CODE
|
||||
PISLOT EQU $05
|
||||
ROMSLOT EQU $07
|
||||
PISLOT EQU $02 ; ROMSLOT
|
||||
BOOTDEV EQU ROMSLOT*16
|
||||
ORG $C000+ROMSLOT*256
|
||||
;*
|
||||
;* ACIA REGISTERS
|
||||
;*
|
||||
@ -11,9 +18,21 @@ ACIAMR EQU $C08B+PISLOT*16
|
||||
;*
|
||||
;* APPLE I/O LOCATIONS
|
||||
;*
|
||||
INDCTR EQU $0400
|
||||
KEYBD EQU $C000
|
||||
STROBE EQU $C010
|
||||
;*
|
||||
;* DRIVER SCRATCHPAD
|
||||
;*
|
||||
PAD0 EQU $0478+ROMSLOT
|
||||
PAD1 EQU $04F8+ROMSLOT
|
||||
PAD2 EQU $0578+ROMSLOT
|
||||
PAD3 EQU $05F8+ROMSLOT
|
||||
PAD4 EQU $0678+ROMSLOT
|
||||
PAD5 EQU $06F8+ROMSLOT
|
||||
PAD6 EQU $0778+ROMSLOT
|
||||
PAD7 EQU $07F8+ROMSLOT
|
||||
;*
|
||||
;* UTIL ROUTINES
|
||||
;*
|
||||
WAIT EQU $FCA8
|
||||
@ -69,43 +88,59 @@ PDWRPRT EQU $2B
|
||||
;*
|
||||
SYNC: LDA #$80
|
||||
STA ACIADR
|
||||
INX
|
||||
TXA
|
||||
AND #$07
|
||||
TAX
|
||||
LDA SPIN,X
|
||||
STA INDCTR
|
||||
LDA #$FF
|
||||
JSR WAIT
|
||||
LDA #$A0
|
||||
STA INDCTR
|
||||
LDA KEYBD
|
||||
BMI SKIPBOOT
|
||||
LDA ACIASR
|
||||
AND #$08
|
||||
BEQ SYNC
|
||||
LDA ACIADR
|
||||
CMP #$81
|
||||
LDY ACIADR
|
||||
CPY #$81
|
||||
BNE SYNC
|
||||
BEQ BOOT
|
||||
SPIN: DB $A1, $AF, $AD, $DC, $A1, $AF, $AD, $DC
|
||||
SKIPBOOT: STA STROBE
|
||||
JMP $FABA ; JUMP BACK TO BOOT SCANNER ROM ROUTINE
|
||||
LDA $00
|
||||
BNE NOAUTO
|
||||
JMP $FABA ; JUMP BACK TO AUTOSTART BOOT SCANNER ROM
|
||||
NOAUTO: RTS
|
||||
;*
|
||||
;* CREATE COMMAND BUFFER FOR BOOT BLOCK
|
||||
;*
|
||||
BOOT: LDA #PDREAD
|
||||
STA PDCMD
|
||||
BOOT: LDY #PDREAD
|
||||
STY PDCMD
|
||||
;LDA #$08
|
||||
STA PDBUFH
|
||||
LDX #BOOTDEV
|
||||
STX PDUNIT
|
||||
LDA #$00
|
||||
STA PDUNIT
|
||||
STA PDBUFL
|
||||
STA PDBLKL
|
||||
STA PDBLKH
|
||||
PHA
|
||||
LDA #$08
|
||||
STA PDBUFH
|
||||
PHA
|
||||
JSR DOCMD
|
||||
LDX #BOOTDEV
|
||||
JMP $801
|
||||
;*
|
||||
;* PRODOS INTELLIGENT DEVICE ENTRYPOINT
|
||||
;*
|
||||
DOCMD: PHP
|
||||
SEI
|
||||
LDA PDUNIT
|
||||
DOCMD: LDA PDUNIT
|
||||
ASL
|
||||
LDA PDCMD
|
||||
ROL
|
||||
ASL
|
||||
ORA #$A0
|
||||
PHP
|
||||
STA PAD0
|
||||
SEI
|
||||
JSR SENDACC
|
||||
LDA PDBLKL
|
||||
JSR SENDACC
|
||||
@ -114,49 +149,44 @@ DOCMD: PHP
|
||||
CHKACK: JSR RECVACC
|
||||
TAX
|
||||
DEX
|
||||
CPX PDCMD
|
||||
CPX PAD0
|
||||
BNE CHKACK
|
||||
LDY #$00
|
||||
CPX #PDREAD
|
||||
LDY PDCMD
|
||||
BEQ STATUS
|
||||
LDX #$02 ; # OF PAGES TO XFER
|
||||
DEY ; CPY #PDREAD
|
||||
BEQ RDBLK
|
||||
CPX #PDWRITE
|
||||
DEY ; CMP #PDWRITE
|
||||
BEQ WRBLK
|
||||
CPX #PDSTAT
|
||||
BEQ STATDEV
|
||||
LDA #PDIOERR
|
||||
IOERR: LDA #PDIOERR
|
||||
CMDERR: PLP
|
||||
SEC
|
||||
RTS
|
||||
STATDEV:
|
||||
LDX #$FF
|
||||
LDY #$FF
|
||||
RDBLK: JSR RECVACC
|
||||
STA (PDBUFF),Y
|
||||
INY
|
||||
BNE RDBLK
|
||||
INC PDBUFH
|
||||
DEX
|
||||
BNE RDBLK
|
||||
STATUS: LDX #$FF
|
||||
DEY ; LDY #$FF
|
||||
CMDEX: JSR RECVACC
|
||||
BNE CMDERR
|
||||
PLP
|
||||
CLC
|
||||
RTS
|
||||
RDBLK:
|
||||
RD1BLK: JSR RECVACC
|
||||
STA (PDBUFF),Y
|
||||
INY
|
||||
BNE RD1BLK
|
||||
INC PDBUFH
|
||||
RD2BLK: JSR RECVACC
|
||||
STA (PDBUFF),Y
|
||||
INY
|
||||
BNE RD2BLK
|
||||
BEQ CMDEX
|
||||
WRBLK:
|
||||
WR1BLK: LDA (PDBUFF),Y
|
||||
WRBLK: LDA (PDBUFF),Y
|
||||
JSR SENDACC
|
||||
INY
|
||||
BNE WR1BLK
|
||||
BNE WRBLK
|
||||
INC PDBUFH
|
||||
WR2BLK: LDA (PDBUFF),Y
|
||||
JSR SENDACC
|
||||
INY
|
||||
BNE WR1BLK
|
||||
DEX
|
||||
BNE WRBLK
|
||||
BEQ CMDEX
|
||||
;*
|
||||
;* ACIA I/O ROUTINES
|
||||
;*
|
||||
SENDACC:
|
||||
PHA
|
||||
SENDWT: LDA ACIASR
|
||||
@ -170,4 +200,13 @@ RECVWT: LDA ACIASR
|
||||
AND #$08
|
||||
BEQ RECVWT
|
||||
LDA ACIADR
|
||||
RTS
|
||||
RTS
|
||||
ENDCMD:
|
||||
.REPEAT $C000+ROMSLOT*256+250-*
|
||||
DB $FF
|
||||
.ENDREP
|
||||
DB "Pi"
|
||||
DW 0
|
||||
DB $A7
|
||||
DB <DOCMD
|
||||
.ASSERT * = $C000+(ROMSLOT+1)*256, error, "Code not page size"
|
Loading…
x
Reference in New Issue
Block a user