home *** CD-ROM | disk | FTP | other *** search
/ Tajemnice Atari 5 / Tajemnice_Atari_Nr_05_1992_Avalon_pl.atr / tacopy.asm < prev    next >
Assembly Source File  |  2023-02-26  |  6KB  |  1 lines

  1. * TA COPY       autor: JBW¢* (c) 1992 Tajemnice ATARI¢¢¢        opt %100101¢¢¢*--- procedury w ROM¢afp      equ $D800¢fpi      equ $D9D2¢ciov     equ $E456¢¢¢*--- rejestry pakietu FP¢¢fr0      equ $d4¢cix      equ $f2¢inbuff   equ $f3¢¢¢*--- system¢¢runad    equ $2E0¢initad   equ $2E2¢dosrun   equ $A¢dosini   equ $C¢iocb     equ $340¢¢io_com   equ iocb+2¢io_sta   equ iocb+3¢io_adr   equ iocb+4 (2)¢io_len   equ iocb+8 (2)¢io_mod   equ iocb+10¢io_aux   equ iocb+11¢¢memhi    equ $2E5¢memlo    equ $2E7¢driv     equ $301¢skctl    equ $D20F¢¢*--- stale¢¢chn0     equ $00¢chn1     equ $10¢gett     equ 5¢putt     equ 9¢getb     equ 7¢putb     equ 11¢eol      equ 155¢eof      equ 136¢shift    equ %00001000¢¢*--- strona zerowa¢¢byte     equ $cb¢addr     equ $cc¢word     equ $ce¢¢used     equ $d0¢size     equ $d2¢¢*--- numery komunikatow¢¢nul_m    equ 0¢tit_m    equ 1¢get_m    equ 2¢put_m    equ 3¢err_m    equ 4¢mem_m    equ 5¢sta_m    equ 6¢¢     org $8000¢¢main     jsr init¢* glowna petla¢loop     jsr close¢* wypisz status¢         jsr dsp_stat¢* pobierz nazwe pliku¢         ldx #get_m odczyt¢         lda used¢         ora used+1¢         beq *+3¢         inx        zapis¢         jsr get_text¢         bmi loop¢* nazwa pusta?¢         dec io_len,x¢         bne io¢* zmiana trybu lub koniec¢         lda used¢         ora used+1¢         beq quit¢         lda #0¢         sta used¢         sta used+1¢         beq loop  (jmp)¢* zapis czy odczyt?¢io       lda used¢         ora used+1¢         beq rd¢* zapis¢         jsr write¢         jmp loop¢* odczyt¢rd       jsr read¢         jmp loop¢* powrot do DOS-u¢quit     jmp (dosrun)¢¢*--- wypisz tekst¢¢dsp_msg  equ *¢* odszukaj tekst nr X¢         ldy #0¢fm0      dex¢         bmi mout¢fmes     lda data,y¢         iny¢         cmp #eol¢         bne fmes¢         beq fm0  (jmp)¢* wypisz¢mout     txa¢         ldx #chn0¢         sta io_len,x¢         clc¢         tya¢         adc dtaa¢         sta io_adr,x¢         lda #0¢         sta io_len+1,x¢         adc dtaa+1¢         sta io_adr+1,x¢         lda #putt¢         sta io_com,x¢         jmp ciov¢*--- pobierz tekst¢get_text jsr dsp_msg¢         ldx #chn0¢         lda #gett¢         sta io_com,x¢         lda txta¢         sta io_adr,x¢         lda txta+1¢         sta io_adr+1,x¢         sta io_len+1,x¢         jmp ciov¢¢*--- wypisywanie liczb¢¢pwor     jsr phex¢         txa¢phex     pha¢         jsr pxdig¢         pla¢         lsr @¢         lsr @¢         lsr @¢         lsr @¢pxdig    and #%00001111¢         ora #'0'¢         cmp #'9'+1¢         bcc *+4¢         adc #6¢         sta stat,y¢         dey¢         rts¢¢*--- wypisz status¢¢dsp_stat equ *¢* wykorzystywane¢         lda used¢         ldx used+1¢         ldy <use_+3¢         jsr pwor¢* rozmiar bufora¢         sec¢         lda memhi¢         sbc bufa¢         sta size¢         lda memhi+1¢         sbc bufa+1¢         sta size+1¢         tax¢         lda size¢         ldy <siz_+3¢         jsr pwor¢* wypisz¢         ldx #nul_m pusty¢         jsr dsp_msg¢         ldx #sta_m status¢         jmp dsp_msg¢¢*--- CIO z ew. komunikatem¢¢mcio     jsr ciov¢         bpl ciok¢         cpy #136¢         beq iook¢error    ldx #err_m¢derr     jsr dsp_msg¢         ldy #255¢         rts¢ciok     ldx #mem_m¢         lda used¢         ora used+1¢         beq derr¢iook     ldy #1¢         rts¢¢*--- zamknij kanal¢¢close    ldx #chn1¢         lda #12¢         sta io_com,X¢         jsr ciov¢         lda #3¢         sta skctl cicho!¢         tya¢         bmi error¢         rts¢¢*--- otworz kanal¢¢open     ldx #chn1¢         sta io_mod,x¢         lda #3¢         sta io_com,x¢* szukaj dwukropka¢         ldy #':'¢         cpy text+1¢         beq seti¢         cpy text+2¢         beq seti¢         lda #0¢* ustaw iocb¢seti     clc¢         adc dnma¢         sta io_adr,x¢         lda #0¢         adc dnma+1¢         sta io_adr+1,x¢         lda skctl¢         and #shift¢         asl @¢         asl @¢         asl @¢         asl @¢         sta io_aux,x¢         jsr ciov¢         bmi error¢* przygotuj na potem...¢         lda io_mod,x¢         ora #3¢         sta io_com,x¢         lda bufa¢         sta io_adr,x¢         lda bufa+1¢         sta io_adr+1,x¢         tya¢         rts¢¢*--- wczytaj plik¢¢read     lda #4¢         jsr open¢         bmi rret¢         lda size¢         sta io_len,x¢         lda size+1¢         sta io_len+1,x¢         jsr mcio¢         bmi rret¢         lda io_len,x¢         sta used¢         lda io_len+1,x¢         sta used+1¢rret     rts¢¢*--- zapisz plik¢¢write    lda #8¢         jsr open¢         bmi wret¢         lda used¢         sta io_len,x¢         lda used+1¢         sta io_len+1,x¢         jsr mcio¢wret     rts¢¢*--- ustawienie poczatkowe¢¢init     lda #'0'¢         ora driv¢         sta dnam+1¢         lda #0¢         sta used¢         sta used+1¢         ldx #tit_m tytul¢         jmp dsp_msg¢¢¢*--- koniec programu¢¢¢         brk¢¢*--- dane adresowe¢¢txta     dta a(text)¢dtaa     dta a(data)¢bufa     dta a(buff)¢dnma     dta a(dnam)¢         dta a(0)¢¢*--- dane¢¢data     dta b(eol)¢         dta c' TA COPY 1.0 '*¢         dta b(eol)¢         dta c'Source:',b(eol)¢         dta c'Target:',b(eol)¢         dta c'I/O error!'¢         dta b(eol)¢         dta c'Out of memory!'¢         dta b(eol)¢stat     dta c'Used $'¢use_     equ *-stat¢         dta c'.... bytes of $'¢siz_     equ *-stat¢         dta c'....',b(eol)¢¢dnam     dta c'D0:'¢text     org *+120¢buff     equ *¢¢         org runad¢         dta a(main)¢¢         end¢