Start on FILE i/O
This commit is contained in:
1 parent
7033104799
commit
03518c4937
22 files changed
+330
-127
No files matched your search
+106
-14
@@ -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
|
||||
Reference in new issue
Block a user