mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2024-06-28 18:29:33 +00:00
Merge branch 'main' into main
This commit is contained in:
commit
859f491b16
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
354
applecorn.s
354
applecorn.s
|
@ -1,4 +1,4 @@
|
||||||
* Load Acorn BBC Micro ROM into aux memory
|
* Load an Acorn BBC Micro ROM in aux memory and
|
||||||
* Provide an environment where it can run
|
* Provide an environment where it can run
|
||||||
* Bobbi 2021
|
* Bobbi 2021
|
||||||
|
|
||||||
|
@ -281,6 +281,79 @@ COPYAUXBLK
|
||||||
LDA $C081
|
LDA $C081
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
* ProDOS file handling for MOS OSFIND OPEN call
|
||||||
|
OFILE LDX $0100 ; Recover SP
|
||||||
|
TXS
|
||||||
|
LDA $C081 ; ROM, please
|
||||||
|
LDA $C081
|
||||||
|
|
||||||
|
LDA #<MOSFILE
|
||||||
|
STA OPENPL+1
|
||||||
|
LDA #>MOSFILE
|
||||||
|
STA OPENPL+2
|
||||||
|
JSR OPENFILE
|
||||||
|
BCS :NOTFND
|
||||||
|
LDA OPENPL+5 ; File ref number
|
||||||
|
PHA
|
||||||
|
BRA FINDEXIT
|
||||||
|
:NOTFND LDA #$00
|
||||||
|
PHA
|
||||||
|
FINDEXIT LDA $C08B ; R/W RAM, LC bank 1
|
||||||
|
LDA $C08B
|
||||||
|
LDA #<OSFINDRET
|
||||||
|
STA STRTL
|
||||||
|
LDA #>OSFINDRET
|
||||||
|
STA STRTH
|
||||||
|
PLA
|
||||||
|
SEC
|
||||||
|
BIT $FF58
|
||||||
|
JMP XFER
|
||||||
|
|
||||||
|
* ProDOS file handling for MOS OSFIND CLOSE call
|
||||||
|
CFILE LDX $0100 ; Recover SP
|
||||||
|
TXS
|
||||||
|
LDA $C081 ; ROM, please
|
||||||
|
LDA $C081
|
||||||
|
|
||||||
|
LDA MOSFILE ; File ref number
|
||||||
|
STA CLSPL+1
|
||||||
|
JSR CLSFILE
|
||||||
|
|
||||||
|
JMP FINDEXIT
|
||||||
|
|
||||||
|
* ProDOS file handling for MOS OSBGET call
|
||||||
|
FILEGET LDX $0100 ; Recover SP
|
||||||
|
TXS
|
||||||
|
LDA $C081 ; ROM, please
|
||||||
|
LDA $C081
|
||||||
|
|
||||||
|
LDA MOSFILE ; File ref number
|
||||||
|
STA READPL1+1
|
||||||
|
JSR MLI
|
||||||
|
DB READCMD
|
||||||
|
DW READPL1
|
||||||
|
PHA
|
||||||
|
* TODO HANDLE ERROR CASE WHERE C IS SET
|
||||||
|
|
||||||
|
GETEXIT LDA $C08B ; R/W RAM, LC bank 1
|
||||||
|
LDA $C08B
|
||||||
|
LDA #<OSBGETRET
|
||||||
|
STA STRTL
|
||||||
|
LDA #>OSBGETRET
|
||||||
|
STA STRTH
|
||||||
|
PLA
|
||||||
|
SEC
|
||||||
|
BIT $FF58
|
||||||
|
JMP XFER
|
||||||
|
|
||||||
|
* ProDOS file handling for MOS OSBPUT call
|
||||||
|
FILEPUT LDX $0100 ; Recover SP
|
||||||
|
TXS
|
||||||
|
LDA $C081 ; ROM, please
|
||||||
|
LDA $C081
|
||||||
|
|
||||||
|
JMP GETEXIT
|
||||||
|
|
||||||
* ProDOS file handling for MOS OSFILE LOAD call
|
* ProDOS file handling for MOS OSFILE LOAD call
|
||||||
* Return A=0 if successful
|
* Return A=0 if successful
|
||||||
* A=1 if file not found
|
* A=1 if file not found
|
||||||
|
@ -650,6 +723,12 @@ READPL HEX 04 ; Number of parameters
|
||||||
DW 512 ; Request count
|
DW 512 ; Request count
|
||||||
DW $0000 ; Trans count
|
DW $0000 ; Trans count
|
||||||
|
|
||||||
|
READPL1 HEX 04 ; Number of parameters
|
||||||
|
DB #00 ; Reference number
|
||||||
|
DW RDBUF ; Pointer to data buffer
|
||||||
|
DW 1 ; Request count
|
||||||
|
DW $0000 ; Trans count
|
||||||
|
|
||||||
WRITEPL HEX 04 ; Number of parameters
|
WRITEPL HEX 04 ; Number of parameters
|
||||||
DB $01 ; Reference number
|
DB $01 ; Reference number
|
||||||
DW RDBUF ; Pointer to data buffer
|
DW RDBUF ; Pointer to data buffer
|
||||||
|
@ -738,7 +817,7 @@ BGETV EQU $216 ; OSBGET vector
|
||||||
BPUTV EQU $218 ; OSBPUT vector
|
BPUTV EQU $218 ; OSBPUT vector
|
||||||
GBPBV EQU $21A ; OSGBPB vector
|
GBPBV EQU $21A ; OSGBPB vector
|
||||||
FINDV EQU $21C ; OSFIND vector
|
FINDV EQU $21C ; OSFIND vector
|
||||||
|
FSCV EQU $21E ; FSCV misc file ops
|
||||||
MAGIC EQU $BC ; Arbitrary value
|
MAGIC EQU $BC ; Arbitrary value
|
||||||
|
|
||||||
MOSSHIM
|
MOSSHIM
|
||||||
|
@ -838,55 +917,6 @@ INITPG2 LDA DEFVEC,X
|
||||||
DEX
|
DEX
|
||||||
BPL INITPG2
|
BPL INITPG2
|
||||||
|
|
||||||
; LDA #<MOSBRKHDLR
|
|
||||||
; STA BRKV
|
|
||||||
; LDA #>MOSBRKHDLR
|
|
||||||
; STA BRKV+1
|
|
||||||
; LDA #<CLIHND ; Initialize MOS vectors
|
|
||||||
; STA CLIV
|
|
||||||
; LDA #>CLIHND
|
|
||||||
; STA CLIV+1
|
|
||||||
; LDA #<BYTEHND
|
|
||||||
; STA BYTEV
|
|
||||||
; LDA #>BYTEHND
|
|
||||||
; STA BYTEV+1
|
|
||||||
; LDA #<WORDHND
|
|
||||||
; STA WORDV
|
|
||||||
; LDA #>WORDHND
|
|
||||||
; STA WORDV+1
|
|
||||||
; LDA #<WRCHHND
|
|
||||||
; STA WRCHV
|
|
||||||
; LDA #>WRCHHND
|
|
||||||
; STA WRCHV+1
|
|
||||||
; LDA #<RDCHHND
|
|
||||||
; STA RDCHV
|
|
||||||
; LDA #>RDCHHND
|
|
||||||
; STA RDCHV+1
|
|
||||||
; LDA #<FILEHND
|
|
||||||
; STA FILEV
|
|
||||||
; LDA #>FILEHND
|
|
||||||
; STA FILEV+1
|
|
||||||
; LDA #<ARGSHND
|
|
||||||
; STA ARGSV
|
|
||||||
; LDA #>ARGSHND
|
|
||||||
; STA ARGSV+1
|
|
||||||
; LDA #<BGETHND
|
|
||||||
; STA BGETV
|
|
||||||
; LDA #>BGETHND
|
|
||||||
; STA BGETV+1
|
|
||||||
; LDA #<BPUTHND
|
|
||||||
; STA BPUTV
|
|
||||||
; LDA #>BPUTHND
|
|
||||||
; STA BPUTV+1
|
|
||||||
; LDA #<GBPBHND
|
|
||||||
; STA GBPBV
|
|
||||||
; LDA #>GBPBHND
|
|
||||||
; STA GBPBV+1
|
|
||||||
; LDA #<FINDHND
|
|
||||||
; STA FINDV
|
|
||||||
; LDA #>FINDHND
|
|
||||||
; STA FINDV+1
|
|
||||||
|
|
||||||
LDA #<:HELLO
|
LDA #<:HELLO
|
||||||
LDY #>:HELLO
|
LDY #>:HELLO
|
||||||
JSR PRSTR
|
JSR PRSTR
|
||||||
|
@ -1024,37 +1054,143 @@ GSRDGO LDA #<OSREADM
|
||||||
OSREADM ASC 'GSREAD.'
|
OSREADM ASC 'GSREAD.'
|
||||||
DB $00
|
DB $00
|
||||||
|
|
||||||
FINDHND LDA #<OSFINDM
|
* OSFIND - open/close a file for byte access
|
||||||
LDY #>OSFINDM
|
FINDHND PHX
|
||||||
JMP PRSTR
|
PHY
|
||||||
OSFINDM ASC 'OSFIND.'
|
PHA
|
||||||
|
STX ZP1 ; Points to filename
|
||||||
|
STY ZP1+1
|
||||||
|
|
||||||
|
LDA STRTL ; Backup STRTL/STRTH
|
||||||
|
STA TEMP1
|
||||||
|
LDA STRTH
|
||||||
|
STA TEMP2
|
||||||
|
TSX ; Stash alt ZP
|
||||||
|
STX $0101
|
||||||
|
|
||||||
|
PLA
|
||||||
|
PHA
|
||||||
|
CMP #$00 ; A=$00 = close
|
||||||
|
BEQ :CLOSE
|
||||||
|
|
||||||
|
LDA #<MOSFILE+1
|
||||||
|
STA ZP2
|
||||||
|
LDA #>MOSFILE+1
|
||||||
|
STA ZP2+1
|
||||||
|
LDY #$00
|
||||||
|
:L1 LDA (ZP1),Y
|
||||||
|
STA $C004 ; Write main
|
||||||
|
STA (ZP2),Y
|
||||||
|
STA $C005 ; Write aux
|
||||||
|
INY
|
||||||
|
CMP #$0D ; Carriage return
|
||||||
|
BNE :L1
|
||||||
|
DEY
|
||||||
|
STA $C004 ; Write main
|
||||||
|
STY MOSFILE ; Length (Pascal string)
|
||||||
|
STA $C005 ; Write aux
|
||||||
|
|
||||||
|
LDA #<OFILE
|
||||||
|
STA STRTL
|
||||||
|
LDA #>OFILE
|
||||||
|
STA STRTH
|
||||||
|
:S1 CLC ; Use main memory
|
||||||
|
CLV ; Use main ZP and LC
|
||||||
|
JMP XFER
|
||||||
|
|
||||||
|
:CLOSE STA $C004 ; Write main
|
||||||
|
STY MOSFILE ; Write file number
|
||||||
|
STA $C005 ; Write aux
|
||||||
|
|
||||||
|
LDA #<CFILE
|
||||||
|
STA STRTL
|
||||||
|
LDA #>CFILE
|
||||||
|
STA STRTH
|
||||||
|
BRA :S1
|
||||||
|
|
||||||
|
OSFINDRET
|
||||||
|
LDX $0101 ; Recover alt SP from $0101
|
||||||
|
TXS
|
||||||
|
PHA ; Return value
|
||||||
|
LDA TEMP1 ; Restore STRTL/STRTH
|
||||||
|
STA STRTL
|
||||||
|
LDA TEMP2
|
||||||
|
STA STRTH
|
||||||
|
PLA ; Return value
|
||||||
|
PLY ; Value of A on entry
|
||||||
|
CPY #$00 ; Was it close?
|
||||||
|
BNE :S1
|
||||||
|
TYA ; Preserve A for close
|
||||||
|
:S1 PLY
|
||||||
|
PLX
|
||||||
|
RTS
|
||||||
|
|
||||||
|
* OSFSC - miscellanous file system calls
|
||||||
|
OSFSC LDA #<OSFSCM
|
||||||
|
LDY #>OSFSCM
|
||||||
|
JSR PRSTR
|
||||||
|
RTS
|
||||||
|
OSFSCM ASC 'OSFSC.'
|
||||||
DB $00
|
DB $00
|
||||||
|
|
||||||
|
* OSGBPB - Get/Put a block of bytes to/from an open file
|
||||||
GBPBHND LDA #<OSGBPBM
|
GBPBHND LDA #<OSGBPBM
|
||||||
LDY #>OSGBPBM
|
LDY #>OSGBPBM
|
||||||
JMP PRSTR
|
JMP PRSTR
|
||||||
OSGBPBM ASC 'OSGBPB.'
|
OSGBPBM ASC 'OSGBPB.'
|
||||||
DB $00
|
DB $00
|
||||||
|
|
||||||
BPUTHND LDA #<OSBPUTM
|
* OSBPUT - write one byte to an open file
|
||||||
LDY #>OSBPUTM
|
BPUTHND LDA STRTL ; Backup STRTL/STRTH
|
||||||
JMP PRSTR
|
STA TEMP1
|
||||||
OSBPUTM ASC 'OSBPUT.'
|
LDA STRTH
|
||||||
DB $00
|
STA TEMP2
|
||||||
|
LDA #<FILEPUT
|
||||||
|
STA STRTL
|
||||||
|
LDA #>FILEPUT
|
||||||
|
STA STRTH
|
||||||
|
TSX ; Stash alt SP in $0101
|
||||||
|
STX $0101
|
||||||
|
CLC ; Use main memory
|
||||||
|
CLV ; Use main ZP and LC
|
||||||
|
JMP XFER
|
||||||
|
|
||||||
BGETHND LDA #<OSBGETM
|
* OSBGET - read one byte from an open file
|
||||||
LDY #>OSBGETM
|
BGETHND LDA STRTL ; Backup STRTL/STRTH
|
||||||
JMP PRSTR
|
STA TEMP1
|
||||||
OSBGETM ASC 'OSBGET.'
|
LDA STRTH
|
||||||
DB $00
|
STA TEMP2
|
||||||
|
STA $C004 ; Write to main memory
|
||||||
|
STY MOSFILE ; File ref number
|
||||||
|
STA $C005 ; Write to aux memory
|
||||||
|
LDA #<FILEGET
|
||||||
|
STA STRTL
|
||||||
|
LDA #>FILEGET
|
||||||
|
STA STRTH
|
||||||
|
TSX ; Stash alt SP in $0101
|
||||||
|
STX $0101
|
||||||
|
CLC ; Use main memory
|
||||||
|
CLV ; Use main ZP and LC
|
||||||
|
JMP XFER
|
||||||
|
OSBGETRET
|
||||||
|
LDX $0101 ; Recover alt SP from $0101
|
||||||
|
TXS
|
||||||
|
PHA ; Return code
|
||||||
|
LDA TEMP1 ; Recover STRTL/STRTH
|
||||||
|
STA STRTL
|
||||||
|
LDA TEMP2
|
||||||
|
STA STRTH
|
||||||
|
PLA ; Return code (ie: char read)
|
||||||
|
RTS
|
||||||
|
|
||||||
|
* OSARGS - adjust file arguments
|
||||||
ARGSHND LDA #<OSARGSM
|
ARGSHND LDA #<OSARGSM
|
||||||
LDY #>OSARGSM
|
LDY #>OSARGSM
|
||||||
JMP PRSTR
|
JMP PRSTR
|
||||||
OSARGSM ASC 'OSARGS.'
|
OSARGSM ASC 'OSARGS.'
|
||||||
DB $00
|
DB $00
|
||||||
|
|
||||||
* MOS OSFILE HANDLER
|
* OSFILE - perform actions on entire files
|
||||||
* On entry, A=action
|
* On entry, A=action
|
||||||
* XY=>control block
|
* XY=>control block
|
||||||
* On exit, A=preserved if unimplemented
|
* On exit, A=preserved if unimplemented
|
||||||
|
@ -1243,7 +1379,10 @@ RDCHHND PHX
|
||||||
ROR $FF ; Set ESCFLG
|
ROR $FF ; Set ESCFLG
|
||||||
SEC ; Return CS
|
SEC ; Return CS
|
||||||
RTS
|
RTS
|
||||||
:S5 CLC
|
:S5 LDA ESCFLAG
|
||||||
|
ORA #$80
|
||||||
|
STA ESCFLAG
|
||||||
|
SEC
|
||||||
RTS
|
RTS
|
||||||
CURS DW $0000 ; Counter
|
CURS DW $0000 ; Counter
|
||||||
CSTATE DB $00 ; Cursor on or off
|
CSTATE DB $00 ; Cursor on or off
|
||||||
|
@ -1323,7 +1462,6 @@ CURSRT LDA COL
|
||||||
STZ COL
|
STZ COL
|
||||||
:S2 RTS
|
:S2 RTS
|
||||||
|
|
||||||
|
|
||||||
* OSWRCH handler
|
* OSWRCH handler
|
||||||
* All registers preserved
|
* All registers preserved
|
||||||
WRCHHND PHA
|
WRCHHND PHA
|
||||||
|
@ -1361,7 +1499,6 @@ OUTCHAR CMP #$00 ; NULL
|
||||||
CMP #23
|
CMP #23
|
||||||
BEQ :SCROLL
|
BEQ :SCROLL
|
||||||
INC ROW
|
INC ROW
|
||||||
JSR CLREOL
|
|
||||||
:IDONE BRA :DONE
|
:IDONE BRA :DONE
|
||||||
:T5 CMP #$0B ; Cursor up
|
:T5 CMP #$0B ; Cursor up
|
||||||
BNE :T6
|
BNE :T6
|
||||||
|
@ -1454,6 +1591,18 @@ SCNTAB DW $800,$880,$900,$980,$A00,$A80,$B00,$B80
|
||||||
WORDHND STX OSCTRL+0 ; Point to control block
|
WORDHND STX OSCTRL+0 ; Point to control block
|
||||||
STY OSCTRL+1
|
STY OSCTRL+1
|
||||||
CMP #$00 ; OSWORD 0 read a line
|
CMP #$00 ; OSWORD 0 read a line
|
||||||
|
BNE :S01
|
||||||
|
JMP OSWORD0
|
||||||
|
:S01 CMP #$01 ; OSWORD 1 read system clock
|
||||||
|
BNE :S02
|
||||||
|
JMP OSWORD1
|
||||||
|
:S02 CMP #$02 ; OSWORD 2 write system clock
|
||||||
|
BNE :S05
|
||||||
|
JMP OSWORD2
|
||||||
|
:S05 CMP #$05 ; OSWORD 5 read I/O memory
|
||||||
|
BNE :S06
|
||||||
|
JMP OSWORD5
|
||||||
|
:S06 CMP #$06 ; OSWORD 6 write I/O memory
|
||||||
BNE :UNSUPP
|
BNE :UNSUPP
|
||||||
|
|
||||||
* OSRDLINE - Read a line of input
|
* OSRDLINE - Read a line of input
|
||||||
|
@ -1515,6 +1664,9 @@ WORDHND STX OSCTRL+0 ; Point to control block
|
||||||
:EXIT LDA ESCFLAG
|
:EXIT LDA ESCFLAG
|
||||||
ROL
|
ROL
|
||||||
RTS
|
RTS
|
||||||
|
:MAXLEN DB $00
|
||||||
|
:MINCH DB $00
|
||||||
|
:MAXCH DB $00
|
||||||
|
|
||||||
:UNSUPP PHA
|
:UNSUPP PHA
|
||||||
LDA #<:OSWORDM ; Unimplemented, print msg
|
LDA #<:OSWORDM ; Unimplemented, print msg
|
||||||
|
@ -1562,7 +1714,7 @@ BYTECALLER
|
||||||
:S1 CMP #$7C ; $7C = clear escape condition
|
:S1 CMP #$7C ; $7C = clear escape condition
|
||||||
BNE :S2
|
BNE :S2
|
||||||
LDA ESCFLAG
|
LDA ESCFLAG
|
||||||
AND #$7F ; Clear MSB
|
AND #$7F ; Clear MSbit
|
||||||
STA ESCFLAG
|
STA ESCFLAG
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
@ -1654,7 +1806,7 @@ CLIHND PHX
|
||||||
JSR STRCMP
|
JSR STRCMP
|
||||||
BCS :S1
|
BCS :S1
|
||||||
JSR STARQUIT
|
JSR STARQUIT
|
||||||
BRA :EXIT
|
BRA :IEXIT
|
||||||
:S1 LDA #<:CAT
|
:S1 LDA #<:CAT
|
||||||
STA ZP2
|
STA ZP2
|
||||||
LDA #>:CAT
|
LDA #>:CAT
|
||||||
|
@ -1662,7 +1814,7 @@ CLIHND PHX
|
||||||
JSR STRCMP
|
JSR STRCMP
|
||||||
BCS :S2
|
BCS :S2
|
||||||
JSR STARCAT
|
JSR STARCAT
|
||||||
BRA :EXIT
|
BRA :IEXIT
|
||||||
:S2 LDA #<:CAT2
|
:S2 LDA #<:CAT2
|
||||||
STA ZP2
|
STA ZP2
|
||||||
LDA #>:CAT2
|
LDA #>:CAT2
|
||||||
|
@ -1678,18 +1830,44 @@ CLIHND PHX
|
||||||
JSR STRCMP
|
JSR STRCMP
|
||||||
BCS :S4
|
BCS :S4
|
||||||
JSR STARDIR
|
JSR STARDIR
|
||||||
BRA :EXIT
|
:IEXIT BRA :EXIT
|
||||||
:S4 LDA #<:HELP
|
:S4 LDA #<:HELP
|
||||||
STA ZP2
|
STA ZP2
|
||||||
LDA #>:HELP
|
LDA #>:HELP
|
||||||
STA ZP2+1
|
STA ZP2+1
|
||||||
JSR STRCMP
|
JSR STRCMP
|
||||||
BCS :UNSUPP
|
BCS :S5
|
||||||
JSR STARHELP
|
JSR STARHELP
|
||||||
BRA :EXIT
|
BRA :EXIT
|
||||||
:UNSUPP LDA #<:OSCLIM
|
:S5 LDA #<:LISP ; HACK TO MAKE LISP WORK??
|
||||||
|
STA ZP2
|
||||||
|
LDA #>:LISP
|
||||||
|
STA ZP2+1
|
||||||
|
JSR STRCMP
|
||||||
|
BCS :UNSUPP
|
||||||
|
LDA #$01
|
||||||
|
JMP $8000
|
||||||
|
:UNSUPP
|
||||||
|
LDA #<:OSCLIM
|
||||||
LDY #>:OSCLIM
|
LDY #>:OSCLIM
|
||||||
JSR PRSTR
|
JSR PRSTR
|
||||||
|
PLY
|
||||||
|
PLX
|
||||||
|
STX ZP3
|
||||||
|
STY ZP3+1
|
||||||
|
LDY #$00
|
||||||
|
:PL1 LDA (ZP3),Y
|
||||||
|
CMP #$0D
|
||||||
|
BEQ :PS1
|
||||||
|
CMP #$00
|
||||||
|
BEQ :PS1
|
||||||
|
JSR $FFEE ; OSWRCH
|
||||||
|
INY
|
||||||
|
BRA :PL1
|
||||||
|
:PS1 LDA #<:OSCLIM2
|
||||||
|
LDY #>:OSCLIM2
|
||||||
|
JSR PRSTR
|
||||||
|
RTS
|
||||||
:EXIT PLY
|
:EXIT PLY
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
@ -1703,7 +1881,11 @@ CLIHND PHX
|
||||||
DB $00
|
DB $00
|
||||||
:HELP ASC '*HELP'
|
:HELP ASC '*HELP'
|
||||||
DB $00
|
DB $00
|
||||||
:OSCLIM ASC 'OSCLI.'
|
:LISP ASC 'LISP'
|
||||||
|
DB $00
|
||||||
|
:OSCLIM ASC 'OSCLI('
|
||||||
|
DB $00
|
||||||
|
:OSCLIM2 ASC ').'
|
||||||
DB $00
|
DB $00
|
||||||
|
|
||||||
* String comparison for OSCLI
|
* String comparison for OSCLI
|
||||||
|
@ -1902,6 +2084,26 @@ STARDIRRET
|
||||||
STA STRTH
|
STA STRTH
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
* Performs OSBYTE $80 function
|
||||||
|
* Read ADC channel or get buffer status
|
||||||
|
OSBYTE80 CPX #$00 ; X=0 Last ADC channel
|
||||||
|
BNE :S1
|
||||||
|
LDX #$00 ; Fire button
|
||||||
|
LDY #$00 ; ADC never converted
|
||||||
|
RTS
|
||||||
|
:S1 BMI :S2
|
||||||
|
LDX #$00 ; X +ve, ADC value
|
||||||
|
LDY #$00
|
||||||
|
RTS
|
||||||
|
:S2 CPX #$FF ; X $FF = keyboard buf
|
||||||
|
BEQ :INPUT
|
||||||
|
CPX #$FE ; X $FE = RS423 i/p buf
|
||||||
|
BEQ :INPUT
|
||||||
|
LDX #$FF ; Spaced remaining in o/p
|
||||||
|
RTS
|
||||||
|
:INPUT LDX #$00 ; Nothing in input buf
|
||||||
|
RTS
|
||||||
|
|
||||||
* Performs OSBYTE $81 INKEY$ function
|
* Performs OSBYTE $81 INKEY$ function
|
||||||
* X,Y has time limit
|
* X,Y has time limit
|
||||||
* On exit, CC, Y=$00, X=key - key pressed
|
* On exit, CC, Y=$00, X=key - key pressed
|
||||||
|
|
Loading…
Reference in New Issue
Block a user