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 >
Assembly Source File  |  2000-01-27  |  4KB  |  1 lines

  1. * 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'        '¢