home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Syzygy Magazine 7
/
Syzygy_Magazine_7_1999___pl_Disk_2_of_2_Side_B.atr
/
ciolib.arc
/
CIOLIB.ASM
next >
Wrap
Assembly Source File
|
2000-01-27
|
4KB
|
1 lines
* I/O library¢* Last changes: 30.11.1999¢* Lizard/BBSL¢¢* Open file¢* In: AY - pointer to filename¢* X - mode¢* Out: X - channel * 16¢f_open equ *¢ stx $15¢ jsr __lkup¢ lda $15¢ sta $034a,x¢ lda #$03¢ jsr __cio¢ bmi __foe¢ jsr __tag¢ ldy $0343,x¢__foe rts¢¢* Close file¢* In: X - channel * 16¢f_close equ *¢ jsr __tag¢ lda #$0c¢__cio sta $0342,x¢ jmp $e456¢¢* Cloase all channels¢f_clall equ *¢ ldy #$07¢_cal lda f_htab,y¢ beq _cas¢ sty _car+1¢ tya¢ asl @¢ asl @¢ asl @¢ asl @¢ tax¢ jsr f_close¢_car ldy #$00¢_cas dey¢ bpl _cal¢ rts¢¢* Rename; Remove; Lock; Unlock file¢* In: AY - pointer to filenames¢* Out: X - closed channel * 16¢rename equ *¢ ldx #$00¢ dta b($2c)¢remove equ *¢ ldx #$01¢ dta b($2c)¢f_lock equ *¢ ldx #$03¢ dta b($2c)¢f_unlock equ *¢ ldx #$04¢ pha¢ txa¢ ora #$20¢ sta $15¢ pla¢ jsr __lkup¢ lda $15¢ bcc __cio¢¢* Read from file¢* In: AY - buffer¢* ICBUFL - length¢* X - channel * 16¢f_read equ *¢ jsr f_sbfa¢ lda #$07¢ bne __cio¢¢* Write to file¢* In: AY - buffer¢* ICBUFL - length¢* X - channel * 16¢f_write equ *¢ jsr f_sbfa¢ lda #$0b¢ bne __cio¢¢* Get string¢* In: AY - buffer¢* X - length¢* Out: Y - string length¢gets equ *¢ pha¢ tya¢ pha¢ txa ; <length¢ ldy #$00 ; >length¢ ldx #$00 ; channel #0¢ jsr f_sbfl¢ pla¢ tay¢ pla¢¢* Get string from file¢* In: AY - buffer¢* ICBUFL - length¢* X - channel * 16¢* Out: Y - string length (LSB)¢f_gets equ *¢ jsr f_sbfa¢ lda #$05¢ jsr __cio¢ ldy $0348,x¢ lda $0343,x¢ rts¢¢* Put string to file¢* In: AY - buffer¢* X - channel * 16¢f_puts equ *¢ jsr f_sbfa¢ lda #$ff¢ tay¢ jsr f_sbfl¢ lda #09¢ bne __cio¢¢* Get char¢* Out: A - byte¢getc equ *¢ ldx #$00¢¢* Get char from file¢* In: X - channel * 16¢* Out: A - byte¢f_getc equ *¢ jsr *+6¢ cpy #$00¢ rts¢ ldy $0340,x¢ lda $031b,y¢ sta $15¢ lda $031c,y¢ sta $16¢ ldy #$05¢ lda ($15),y¢ pha¢ dey¢ lda ($15),y¢ pha¢ rts¢¢* Put char¢* In: A - char¢* Out: A - send char¢putc equ *¢ ldx #$00¢¢* Put char to file¢* In: A - char¢* X - channel * 16¢* Out: A - send char¢f_putc equ *¢ jsr *+6¢ cpy #$00¢ rts¢ tay¢ lda $0347,x¢ pha¢ lda $0346,x¢ pha¢ tya¢ rts¢¢* File lookup¢* Out: C=1 - all channels already open¢* X - channel * 16¢f_lkup equ *¢ clc¢ lda #$00¢_lul tax¢ lda $0340,x¢ bmi _lue¢ txa¢ adc #$10¢ bpl _lul¢ sec¢_lue rts¢¢__lkup equ *¢ pha¢ jsr f_lkup¢ pla¢ bcc f_sbfa¢ pla¢ pla¢ ldy #$ff¢ rts¢¢* Set file buffer address¢* In: AY - pointer to buffer¢* X - channel * 16¢f_sbfa equ *¢ sta $0344,x¢ tya¢ sta $0345,x¢ rts¢¢* Set file buffer length¢* In: AY - buffer length¢* X - channel * 16¢f_sbfl equ *¢ sta $0348,x¢ tya¢ sta $0349,x¢ rts¢¢__tag pha¢ txa¢ lsr @¢ lsr @¢ lsr @¢ lsr @¢ tay¢ lda #$ff¢ eor f_htab,y¢ sta f_htab,y¢ pla¢ rts¢¢f_htab dta d' '¢