Add OSBYTE 02/03/80. Fix OSFIND 'update' behaviour.

This commit is contained in:
Bobbi Webber-Manners 2021-07-29 21:17:12 -04:00
parent 3d4c4b2e85
commit e2ff749d3b
3 changed files with 39 additions and 10 deletions

Binary file not shown.

View File

@ -969,10 +969,18 @@ BYTEHND PHA
RTS
BYTECALLER
CMP #$00 ; $00 = identify MOS version
BNE :S7C
BNE :S02
LDX #$0A
RTS
:S02 CMP #$02 ; $02 = select input stream
BNE :S03
RTS ; Nothing to do
:S03 CMP #$03 ; $03 = select output stream
BNE :S7C
RTS ; Nothing to do
:S7C CMP #$7C ; $7C = clear escape condition
BNE :S7D
LDA ESCFLAG
@ -994,12 +1002,32 @@ BYTECALLER
RTS
:S7F CMP #$7F ; $7F = check for EOF
BNE :S81
BNE :S80
PHY
JSR CHKEOF
PLY
RTS
:S80 CMP #$80 ; $80 = read ADC or get buf stat
BNE :S81
CPX #$00 ; X<0 => info about buffers
BMI :S80BUF ; X>=0 read ADC info
LDX #$00 ; ADC - just return 0
LDY #$00 ; ADC - just return 0
RTS
:S80BUF CPX #$FF ; Kbd buf
BEQ :S80KEY
CPX #$FE ; RS423
BEQ :NONE
:ONE LDX #$01 ; For outputs, 1 char free
RTS
:S80KEY LDX $C000 ; Keyboard data/strobe
AND #$80
BEQ :NONE
BRA :ONE
:NONE LDX #$00 ; No chars in buf
RTS
:S81 CMP #$81 ; $81 = Read key with time lim
BNE :S82
JSR GETKEY
@ -1030,11 +1058,17 @@ BYTECALLER
RTS
:S86 CMP #$86 ; $86 = read cursor pos
BNE :SDA
BNE :S8B
LDY ROW
LDX COL
RTS
:S8B CMP #$8B ; $8B = *OPT
BNE :SDA
* TODO: Could implement some FS options here
* messages on/off, error behaviour
RTS ; Nothing to do (yet)
:SDA CMP #$DA ; $DA = clear VDU queue
BNE :UNSUPP
RTS

View File

@ -123,7 +123,7 @@ OFILE LDX $0100 ; Recover SP
PLA ; Get option back
PHA
CMP #$80 ; Write mode
BNE :NODEST
BNE :S0
LDA #<MOSFILE ; Attempt to destroy file
STA DESTPL+1
@ -133,11 +133,6 @@ OFILE LDX $0100 ; Recover SP
DB DESTCMD
DW DESTPL
:NODEST PLA ; Get option back
PHA
AND #$80 ; Write or Update
BEQ :NOCREAT
LDA #<MOSFILE ; Attempt to create file
STA CREATEPL+1
STA OPENPL+1
@ -164,7 +159,7 @@ OFILE LDX $0100 ; Recover SP
STA CREATEPL+11
JSR CRTFILE
:NOCREAT LDA #$00 ; Look for empty slot
:S0 LDA #$00 ; Look for empty slot
JSR FINDBUF
STX BUFIDX
CPX #$00