;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ;Û Û ;Û FILE PROCEDURES Û ;Û Û ;Û These procedures are not optimized. Û ;Û Û ;Û NOTE: '&' - this char can use only with PROC/PROCS and MACRO. Û ;Û Û ;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ;----------------------------------------------------------------------------- ; Load and run a DOS file. ; NOTE: This procedure is not complete ! ; in: YX - the name of file. ; out: NF - set if error. ;----------------------------------------------------------------------------- LoadDOS PROC YX _IOCB7_ EQU 944 LDA <_retload_ STA $02E0 ;RUNAD LDA >_retload_ STA $02E0+1 ;RUNAD+1 STX _IOCB7_+4 ;ICBUFA STY _IOCB7_+5 ;ICBUFA+1 LDA #255 STA _IOCB7_+0 LDX #3 STX _IOCB7_+2 ;ICCMD INX STX _IOCB7_+10 ;ICAX1 LDX #7*16 STX _IOCB7_+9 ;ICBUFL+1 JSR $E456 BMI _error_loadDOS_ ;not open LDA #7 STA _IOCB7_+2 ;ICCMD _loadDOS1_: LDX <_bufforDOS_ LDY >_bufforDOS_ STX _IOCB7_+4 ;ICBUFA STY _IOCB7_+5 ;ICBUFA+1 LDX <2 LDY >2 STX _IOCB7_+8 ;ICBUFL STY _IOCB7_+9 ;ICBUFL+1 LDX #7*16 JSR $E456 BMI _ok_loadDOS_ ;not load LDA #255 CMP _bufforDOS_ BNE _error_loadDOS_ ;not the dos file CMP _bufforDOS_+1 BNE _error_loadDOS_ ;not the dos file LDA <4 STA _IOCB7_+8 ;ICBUFL LDX #7*16 JSR $E456 BPL _skip_loadDOS_ _ok_loadDOS_: LDA #255 STA _IOCB7_+0 JMP ($02E0) _skip_loadDOS_: LDA _bufforDOS_ STA _IOCB7_+4 ;ICBUFA LDA _bufforDOS_+1 STA _IOCB7_+5 ;ICBUFA+1 LDA _bufforDOS_+2 SEC SBC _bufforDOS_ STA _IOCB7_+8 ;ICBUFL LDA _bufforDOS_+3 SBC _bufforDOS_+1 STA _IOCB7_+9 ;ICBUFL+1 INC _IOCB7_+8 BNE *+5 INC _IOCB7_+9 LDX #7*16 JSR $E456 BPL _loadDOS1_ _error_loadDOS_: LDA _IOCB7_+3 ;STATUS LDX #255 ;N=1 _retload_: RTS _bufforDOS_ db 0,0,0,0 ENDP ;----------------------------------------------------------------------------- ; Load the file into memory from disk. ; in: ((0)) - the address. ; AX - the name of file. ; out: NF - set if error. ;----------------------------------------------------------------------------- Load PROC ((0)),AX stx 944+4 sta 944+5 lda #255 sta 944+0 lda #3 sta 944+2 lda #12 sta 944+10 ldx #7*16 stx 944+9 jsr 58454 bmi _error_load_ lda #7 sta 944+2 lda 0 sta 944+4 lda 1 sta 944+5 lda #255 sta 944+8 sta 944+9 ldx #7*16 jsr 58454 cpy #136 bne _error_load_ lda #255 sta 944+0 ;136=end of file! lda #0 ;N=0 rts ;the file loaded _error_load_: lda 944+3 ;status ldx #255 ;N=1 rts ENDP ;----------------------------------------------------------------------------- ; Save the file from memory to disk. ; in: ((0)) - the address. ; ((2)) - how many bytes. ; YX - the name of file. ; out: NF - set if error. ;----------------------------------------------------------------------------- Save PROC ((0)),((2)),YX stx 944+4 sty 944+5 lda #255 sta 944+0 lda #3 sta 944+2 lda #8 sta 944+10 ldx #7*16 stx 944+9 jsr 58454 bmi _error_save_ lda #11 sta 944+2 ldx 0 ldy 1 stx 944+4 sty 944+5 lda 2 sta 944+8 lda 3 sta 944+9 ldx #7*16 jsr 58454 bmi _error_save_ lda #255 sta 944+0 lda #0 ;N=0 rts _error_save_: lda 944+3 ldx #255 ;N=1 rts ENDP