home *** CD-ROM | disk | FTP | other *** search
/ Tajemnice Atari 9 / Tajemnice_Atari_Nr_09_1993_Avalon_pl.atr / pse.asm < prev    next >
Assembly Source File  |  2023-02-26  |  7KB  |  1 lines

  1. _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)¢