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