home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tajemnice Atari 9
/
Tajemnice_Atari_Nr_09_1993_Avalon_pl.atr
/
pse.asm
< prev
next >
Wrap
Assembly Source File
|
2023-02-26
|
7KB
|
1 lines
_opt equ %100101¢_org equ $3000¢ org _org¢ opt _opt¢¢* -procedury ROM¢ciov equ $e456¢dschar equ $f2b0¢* -system¢dosrun equ $a¢savmsg equ $64¢runad equ $2e0¢initad equ $2e2¢memhi equ $2e5¢memlo equ $2e7¢hatabs equ $31a¢iocb equ $340¢skctl equ $d20f¢¢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¢¢* -staÆe¢shift equ $8¢chn0 equ $00¢chn1 equ $10¢chn2 equ $20¢putt equ $9¢gett equ $5¢putb equ $b¢getb equ $7¢eol equ $9b¢eof equ $88¢¢len_text equ $80¢len_bufor equ $bc1f-_org¢outbit equ 3¢¢* -numery komunikatow¢hello_m equ 0¢compres_m equ 1¢decomp_m equ 2¢get_m equ 3¢put_m equ 4¢err_m equ 5¢long_m equ 6¢¢* -strona zerowa¢pse_z0 equ $80 (2)¢¢main equ *¢ ldx #hello_m¢ jsr dsp_msg¢¢code ldx #compres_m¢ jsr dsp_msg¢ ldx #get_m¢ jsr get_text¢ bpl *+5¢¢ jmp decode¢¢ ldx #chn1¢ jsr close¢¢ lda #4 -odczyt¢ jsr open¢ bmi code -wystapil blad!¢¢* -czytaj plik¢ lda <len_bufor¢ sta io_len,x¢ lda >len_bufor¢ sta io_len+1,x¢ jsr mcio¢* Ustal dlugosc bufora¢ bmi code -blad¢ lda io_sta,x¢ cmp #eof¢ beq isok¢¢ jsr close¢ ldx #long_m¢ jsr dsp_msg¢ jmp code¢¢isok clc¢ lda io_len,x¢ sta read¢ adc bufa¢ sta end_file -ustal koniec pliku¢ lda io_len+1,x¢ sta read+1¢ adc bufa+1¢ sta end_file+1¢¢ inc end_file¢ bne *+5¢ inc end_file+1¢¢code_out ldx #chn1¢ jsr close¢ ldx #put_m -target¢ jsr get_text¢ bpl *+5 -BREAK zmiana na odczyt¢ jmp code¢ ldx #chn1¢ lda #8 -plik do zapisu¢ jsr open¢ bmi code_out¢¢ jsr reg_zero¢¢ lda #0¢ sta all_mode¢¢ jsr get_one¢ bcc comp_l¢¢ jmp all_byte¢¢comp_l sta rebyte¢¢comp_f lda #0¢ sta ile¢¢comp_d jsr get_one¢ bcs all_byte -koniec pliku¢¢ sta comp_b¢¢ cmp rebyte¢ bne new_byte -rozne bajty¢¢ lda ile¢ cmp pse_bit¢¢ beq new_byte¢¢ inc ile¢¢ jmp comp_d¢¢new_byte lda ile¢ beq only_one¢¢ clc¢ jsr putbit¢¢ bpl *+2+3 (bmi code_out)¢ jmp code_out¢¢ lda ile¢ ldx #8-outbit¢comp_r beq comp_g¢ asl @¢ dex¢ bpl comp_r (jmp)¢¢comp_g ldx #outbit¢ jsr pt_xbit¢ bpl comp_a¢ jmp code_out¢¢only_one sec¢ jsr putbit¢ bpl *+5 (bmi code_out)¢ jmp code_out¢¢comp_a lda rebyte¢ jsr pt_8bit¢ bpl *+5¢ jmp code_out¢¢comp_b equ *+1¢comp_c lda #0¢ jmp comp_l¢¢all_mode equ *+1¢all_byte lda #0¢ bne all_end¢¢ inc all_mode¢¢ lda rebyte¢ eor #$ff¢ jmp comp_l¢¢all_end lda pbit_cnt¢ cmp #8¢ beq all_ok¢ jsr putbit¢ bpl all_end¢ jmp code_out¢¢all_ok ldx #chn1¢ jsr close¢ jmp code_out¢¢decode equ *¢ ldx #decomp_m -decode¢ jsr dsp_msg¢ ldx #get_m¢ jsr get_text¢ bpl *+5¢* -break zmiana na kompresje¢ jmp code¢deco_in ldx #chn1¢ jsr close¢ lda #4 -odczyt¢ jsr open¢ bmi decode -blad !!!¢¢ clc¢ lda bufa¢ adc <len_buf¢ sta end_file¢ lda bufa+1¢ adc >len_buf¢ sta end_file+1¢¢ jsr reg_zer¢¢* -wyslij 8 bitow¢pt_8bit ldx #8¢* -wyslij x bitow¢pt_xbit stx pt_xcnt¢ sta ptbyte¢pt_xcnt equ *+1¢pt_cn lda #0¢ bne pt_lop¢ ldy #1¢ rts¢pt_lop dec pt_xcn¢ rol ptbyte¢ jsr putbit¢ bpl pt_cn¢ rts¢¢* -proc putbit¢putbit rol byte_r¢ dec pbit_cnt¢ beq *+3¢ rts¢ lda #8¢ sta pbit_cnt¢* -znowu 8 bitow do wyslania¢ inc write¢ bne *+5¢ inc write+1¢byte_r equ *+1¢ lda #0¢putbyte pha¢ lda #putb¢put_u ldx #chn1¢ sta io_com,x¢ lda #0¢ sta io_len,x¢ sta io_len+1,x¢ pla¢ jmp mcio¢*- Wez jeden bajt z urzadzenia.¢getbyte lda #getb¢ pha¢ bne put_u (jmp)¢¢getbit inc pbit_cnt¢ lda pbit_cnt¢ cmp #9¢ bcs get_g -pobrano juz caly bajt¢ rol byte_r¢ ldx #chn1¢ ldy io_sta,x¢ rts¢get_g lda #0¢ sta pbit_cnt¢ jsr getbyte¢ bpl *+3¢ rts¢ sta byte_r¢ jmp getbit¢gt_8bit ldx #8¢gt_xbit stx gt_xcnt¢ lda #0¢ sta gtbyte¢gt_xcnt equ *+1¢gt_cnt lda #0¢ bne gt_lop¢ lda gtbyte¢ ldy #1¢ rts¢gt_lop dec gt_xcnt¢ jsr getbit¢ bpl *+3¢ rts¢ rol gtbyte¢ jmp gt_cnt¢¢put_one jsr check_rg¢ bcc *+3¢ rts¢ sta (pse_z0),y¢¢ jmp get_cd¢¢get_one jsr check_rg¢ bcc *+3¢ rts¢ lda (pse_z0),y¢¢get_cd inc pse_z0¢ bne *+4¢ inc pse_z0+1¢ rts¢¢check_rg pha¢ lda pse_z0¢ cmp end_file¢ lda pse_z0+1¢ sbc end_file+1¢ pla¢ ldy #0¢ rts¢¢reg_zero ldx #1¢rg_zr lda #0¢ sta write,x¢ lda bufa,x¢ sta pse_z0,x¢ dex¢ bpl rg_zr¢¢ lda #0¢ ldx #outbit¢rg_ob sec¢ rol @¢ dex¢ bne rg_ob¢ sta pse_bit¢¢ lda #8¢ sta pbit_cnt¢ rts¢¢* -zamknij kanal¢close lda #12¢ sta io_com,x¢ jsr ciov¢ lda #3¢ sta skctl -cicho !¢ rts¢¢* -otworz kanal¢open 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 mcio¢ php¢ lda bufa¢ sta io_adr,x¢ lda bufa+1¢ sta io_adr+1,x¢ lda io_mod,x¢ ora #$3¢ sta io_com,x¢ plp¢ rts¢¢* cio z ew. komunikatem¢mcio jsr ciov¢ bpl iook¢ cpy #eof¢ beq iook¢error ldx #err_m¢derr jsr dsp_msg¢ ldy #$ff¢ rts¢iook ldy #1¢ rts¢¢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¢ lda <len_text¢ sta io_len,x¢ lda >len_text¢ sta io_len+1,x¢ jsr ciov¢ bmi nofine¢¢ lda text¢ cmp #eol¢ bne nofine¢¢ pla¢ pla¢¢ jmp (dosrun)¢¢nofine ldy io_sta,x¢ rts¢¢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 tekst¢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¢¢dtaa dta a(data)¢dnma dta a(dnam)¢txta dta a(text)¢bufa dta a(bufor)¢¢* dane¢data equ *¢ dta c'TA PSE de/compressor',b(eol)¢ dta c' Compress',b(eol)¢ dta c' Decompress',b(eol)¢ dta c'Source:',b(eol)¢ dta c'Target:',b(eol)¢ dta c'I/O error !',b(eol)¢ dta c'Buffor full!',b(eol)¢¢dnam dta c'D1:'¢text org *+len_text¢¢pbit_cnt org *+1 -ile bitow wyslano/odczytano¢pse_bit org *+1 -ile bitow wskaznika¢¢write org *+2 -ile bajtow wyslano¢end_file org *+2 -rzeczywisty koniec pliku¢read org *+2 -ile bajtow wczytano¢ptbyte org *+1 -zapisywany bajt¢gtbyte org *+1 -odczytywany bajt¢rebyte org *+1 -powtarzajacy sie bajt¢ile org *+1 -ile takich samych bajtow wystapilo¢bufor equ * -bufor odczytu pliku¢¢run_me ldx $2e¢ ldy iocb,x¢ lda hatabs,y¢ sta dnam¢ lda $21¢ ora #'0'¢ sta dnam+1¢ rts¢¢ org runad¢ dta a(main)¢ dta a(run_me)¢