.segment "EXTRA" ; IO CHKIN: stx CURDVC stx IO_FILE_DESCRIPTOR lda IO_COMMAND_SELECT_IN sta IO_FILE_COMMAND rts 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+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 IO_KBD cmp #$03 beq :+ rts : jmp STOP SYS: jsr GTNUM lda LINNUM sta SYSJMP+1 lda LINNUM+1 sta SYSJMP+2 SYSJMP: jsr $FFFF 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