Start on FILE i/O

This commit is contained in:
Kilian committed 2026-09-28 14:44:11 +02:00
1 parent 7033104799
commit 03518c4937
22 files changed
+330 -127

No files matched your search

+106 -14
View File
@@ -1,34 +1,126 @@
.segment "EXTRA"
LOAD:
; IO
CHKIN:
stx CURDVC
stx IO_FILE_DESCRIPTOR
lda IO_COMMAND_SELECT_IN
sta IO_FILE_COMMAND
rts
SAVE:
CHKOUT:
stx CURDVC
stx IO_FILE_DESCRIPTOR
lda IO_COMMAND_SELECT_OUT
sta IO_FILE_COMMAND
rts
CLRCH:
lda #0
sta CURDVC
lda IO_COMMAND_RESET
sta IO_FILE_COMMAND
rts
CHRIN:
lda CURDVC
bne @file
lda IO_KBD
bmi @end
jsr CHROUT ; echo
@file:
lda IO_COMMAND_READ
sta IO_FILE_COMMAND
@wait:
lda IO_FILE_STATUS
and #FILE_STATUS_READY
beq @wait
lda IO_FILE_DATA
@end:
rts
CHROUT:
lda CURDVC
bne @file
sta IO_SCREEN
rts
@file:
sta IO_FILE_DATA
lda IO_COMMAND_WRITE
sta IO_FILE_COMMAND
@wait:
lda IO_FILE_STATUS
and #$4
beq @wait
rts
OPEN:
jsr GETBYT
stx IO_FILE_DESCRIPTOR
jsr CHKCOM
jsr FRMEVL
jsr CHKSTR
jsr FREFAC
sta STRNG2
ldy #0
@copy:
cpy STRNG2
beq @done_copy
lda (INDEX),y
sta FILE_NAME_BUFFER,y
iny
bne @copy
@done_copy:
lda #0
sta FILE_NAME_BUFFER,y
lda #<FILE_NAME_BUFFER
sta IO_FILE_DATA
lda #>FILE_NAME_BUFFER
sta IO_FILE_DATA+1
lda #IO_COMMAND_OPEN
sta IO_FILE_COMMAND
@wait:
lda IO_FILE_STATUS
and #FILE_STATUS_READY
beq @wait
lda #FILE_STATUS_READY
and #$01
bne @error
rts
@error:
jmp IQERR
CLOSE:
rts
; Default
ISCNTC:
lda $BC01
lda IO_KBD
cmp #$03
beq :+
rts
:
jmp STOP
MONRDKEY:
lda $BC01
bmi :+
sta $BC00 ; echo
:
SYS:
jsr GTNUM
lda LINNUM
sta SYSJMP+1
lda LINNUM+1
sta SYSJMP+2
SYSJMP:
jsr $FFFF
rts
MONCOUT:
sta $BC00
rts
MONRDKEY := CHRIN
MONCOUT := CHROUT
.segment "WOZMON"
.include "wozmon.s"
.segment "RESETVEC"
.word $0000 ; NMI vector
.word COLD_START ; RESET vector
.word $0000 ; IRQ vector
.word $0000 ; NMI vector
.word COLD_START ; RESET vector
.word $0000 ; IRQ vector