FUJIbaudLdataMUUNCOPY COM 018U n D 0B OB nL ALl-_[ AB8`:0`data`UU`7ȎҌ eM` ?i(j`&e&` N $ B խ)?data`UUya{I Hҭ ) eҎh`OVȩ O .VߩV`D ޅ V5 nɈ*HH Ydata`UU N & / lhh`HD  B V0ҩ҈h`HD1  hHJBD m DHIm EKdata^UU ?h B)`C`E FC`DD`B0 OOBLnBB` ޅl mEmF驀Irdata`UU``` 0XY V0 =>` i i0% i i` L,C0z 0data`UUEFDE8HI ?DЯHEIF E^-_IᩀC BЊI N BLQ 0QDмdata_UUL Bi1 DE8HI ?0 D O nL B I 08*data`UU*(i 0 & / 05 ǂ i0 0ԥ L   ndata`UU`HH c NE FiF  O NDiʆ Bdata`UU N,C B N O hh`H /hJJJJ)`i(e`XY BLD data_UU N#0}#) B` N`   7τ`H data`UU 7h`ۂ .9GI^c+*~ .FMGVBGNFFMMMMMMMGFMMMMMMMGVBVBVBV*"7sBVBVBVBV.#opyBV|||rdata`UU||||BVBGNNNNNNNFGNNNNNNNFBVBVBVBFMMMGVBNNNNVverBNNNNVVBGNNNFHNNMMNNJMMGFYYdata`UUNNNUUMMMIUUUOoNoYKLBMVBԀVBVE1:P1:C1:D1:IZ mdata_UU dT >l  D!ϩҩӭԍՍ8ԅХՅѠ8fϥd鉐`$pa0%ґ 1 @ndata`UU`) ӐA) :҈逐e҈鉰Цѐ$0ֆ8֑ 1L)ґ 1L`yM`lj;k+*dxdataUUdata*RUUɯϠ  file:_IO.ASM  date:90.03.24  author:J.B.Wi$niewskdataaUUi   _iocb equ $340_ciov equ $E456_skctl equ $D20Fdata_UU A: letter-parameter  A: result  _upper cmp #'a' bcc _up@data`UUp_r cmp #'z'+1 bcs _upp_r eor #$20_upp_r rts󠠠 A: data byte ddataaUU(_ioz0): message addr  Y: 2nd digit  offset  _phex pha ddata`UUjsr _pxdig pla lsr @ lsr @ lsr @ lsr @_pxdig and #%00001111 ora #'0' data_UU cmp #'9'+1 bcc *+4 adc #6 sta (_ioz0),Y dey rts젠tdata`UU X: channel# * 16  A,Y: fspec address  CY: read=0, write=1  _open sta _iocb+4,Xxdata`UU tya sta _iocb+5,X lda #3 sta _iocb+2,X lda #4 bcc *+3 asl @ (data_UU*2) sta _iocb+10,X lda #0 sta _iocb+11,X jmp _ciov젠 X: channfdata`UUel# * 16  _close lda #12 sta _iocb+2,X jsr _ciov php lda #3dataaUU sta _skctl (keep silence) plp rts X: channel# * 16  A,Y: data data`UUaddress  _write sta _ioz0 sty _ioz0+1 clc adc #2 sta _iocb+Zdata_UU4,X bcc *+3 iny tya sta _iocb+5,X lda #8 ora _iomode sta _iocb+2,)data`UUX ldy #0 lda (_ioz0),Y sta _iocb+8,X iny lda (_ioz0),Y sta _iocb+9,X odata`UU jmp _ciovᠠ X: channel# * 16  A,Y: data address  _read dataaUU sta _ioz0 sty _ioz0+1 clc adc #2 sta _iocb+4,X bcc *+3 iny tyaIdata_UU sta _iocb+5,X lda #4 ora _iomode sta _iocb+2,X ldy #0 lda (_ioz0),Y dataaUU sta _iocb+8,X iny lda (_ioz0),Y sta _iocb+9,X jsr _ciov ldy #0 lda _iocdataaUUb+8,X sta (_ioz0),Y iny lda _iocb+9,X sta (_ioz0),Y ldy _iocb+3,X rtsdata_UU堠 _settxt: text mode  _setbin: binary mode  _settxt lda #1 dataaUUbpl *+4 (jmp)_setbin lda #3 sta _iomode rts A: character to put  data`UU _putch tay lda _iocb+7 pha lda _iocb+6 pha tya rts?data`UU X: channel# * 16  A: result  _getkey lda <_kbdnam data_UU ldy >_kbdnam clc (read) jsr _open lda #7 sta _iocb+2,X lda #0 sta _idataaUUocb+8,X sta _iocb+9,X jsr _ciov pha jsr _close pla rtsᠠ+data`UU _kbdnam:keyboard name  _iomode:mode of I/O  _kbdnam dta c'K:',b($9B)_iomode dta b7dataUU(3) _kbdnam:keyboard name  _iomode:mode of I/O  _kbdnam dta c'K:',b($9B)_iomode dta tdataUUdata&RUU͠  file: _PM.ASM  date: 01.04.1990 author: $dataaUU  Miroslaw Liminowicz  *- page 0_pmtmp equ _pmz0 (2)_pmpoint data_UUequ _pmz0+2 (2)*- system variablessdmctl equ $22Fgprior equ $26Fpcolr0 equ $2C0hposp0 equ $D000gractl equ $D01Dsizep0 dataaUUequ $D008pmbase equ $D407͠A- MSB PM area C=0 two line resolutionC=1 one line resoluTdata`UUtion _pmon and #%11111000 sta pmbase sta _pmaddr lda sdmctl andataaUUd #%11101111 sta sdmctl lda #0 rol @ sta _pmres asl @ asl @ asl @Ddata_UU asl @ ora sdmctl ora #%00001100 sta sdmctl lda gprior and #%11000000 data`UU ora #%00001000 sta gprior lda #%00000011 sta gractl lda #0 ldx #7_pmout stdata`UUa hposp0,x sta sizep0,x sta _pmpx,x sta _pmpy,x dex bpl _pmout jsr _pmpad#data_UUr ldx _pmres inx txa asl @ tax ldy #0 tya_pmcpage sta (_pmtmpdataaUU),y iny bne *-3 inc _pmtmp+1 dex bpl _pmcpage lda #4 jsr _pmpadrdata`UU lda #0 tay sta (_pmtmp),y iny bne *-3 rts͠_pdataaUUmoff lda sdmctl and #%11100011 sta sdmctl lda #0 sta gprior sta gractl l data_UUdx #7_clppos equ * sta hposp0,x dex bpl _clppos rtsA- playerdata`UU's number X- color of player Y=1 normal width Y=2 double width Y=4 quadruple width  Pdata`UU _pmset and #3 sta _pmhelp txa ldx _pmhelp sta pcolr0,x dey dataaUU tya and #%00000011 sta sizep0,x rtsA- player's number X- ho;data_UUrizontal position Y- vertical position  _pmxy and #7 sta _pmhelp txa dataaUU ldx _pmhelp sta _pmpx,x sta hposp0,x tya pha txa jsr _pmpadr dataaUU pla ldx _pmres bne *+4 and #$7F ldx _pmhelp ldy _pmpy,x sta _pmpy,x Mdata_UU cpx #4 bcs _pmmisil pha ldx #0_pmcptb lda (_pmtmp),y pha lda #0 udataaUU sta (_pmtmp),y pla sta _pmbuf,x iny tya and #$7F bne *+13 lda _DdataaUUpmres bne *+8 tya and #$80 eor #$80 tay inx cpx #16 bcc`dataaUU _pmcptb pla tay ldx #0_pmcpob lda _pmbuf,x sta (_pmtmp),y iny tya data_UU and #$7F bne *+13 lda _pmres bne *+8 tya and #$80 eor #$80 t8dataaUUay inx cpx #16 bcc _pmcpob rts_pmmisil pha dex dex dex GdataaUU dex lda (_pmtmp),y and _pmmask,x sta (_pmtmp),y pla tay lda _pmmask,xdataaUU eor #$FF ora (_pmtmp),y sta (_pmtmp),y rtsA- player's number ]data_UU X- LSB addres of shape Y- MSB addres of shape  _pmshape stx _pmpoint sty _pmpoint+dataaUU1 cmp #4 bcc *+3 rts sta _pmhelp tax lda _pmpx,x sta hposp0,x dataaUU txa jsr _pmpadr ldy _pmhelp ldx _pmpy,y ldy #0_pmcppl lda (_pmpoint),y sty data_UU_pmhelp pha txa tay pla sta (_pmtmp),y tya tax inx dataaUU txa and #$7F bne *+13 lda _pmres bne *+8 txa and #$80 eor #$8dataaUU0 tax ldy _pmhelp iny cpy #16 bcc _pmcppl rtsdataaUU_pmpadr pha lda #0 sta _pmtmp ldx _pmres inx txa asl @ ,clc &data_UU tax adc _pmaddr sta _pmtmp+1 pla cmp #4 bcs _pmisile tax_pmsearc dexdataaUU bpl *+3 rts clc lda _pmtmp adc #$80 ldy _pmres beq *+4 dataaUUadc #$80 sta _pmtmp bcc *+4 inc _pmtmp+1 jmp _pmsearc_pmisile ldx _pmres_pmis1 sec dataaUU lda _pmtmp sbc #$80 sta _pmtmp lda _pmtmp+1 sbc #0 sta _pmtmp+1 dex data_UU bpl _pmis1 rts**********************- My variables_pmaddr org *+1_pmres org *+1_pmhelp org *+1_pmGdataaUUpy org *+8_pmpx org *+8_pmbuff org *+16_pmmask dta b(%11111110) dta b(%11111011) dta b(%11101111)dataUU dta b(%10111111) *+8_pmbuff org *+16_pmmask dta b(%11111110) dta b(%11111011) dta b(%11101111)dataUUdata6RUU䠠  file: _SOUND.ASM  date: 01.04.1990  author: Janusz Pelc dataaUU  * page 0_addr equ _sndz0 (2)* systemrtclock equ $14audf1 equ $DdataaUU200audc1 equ $D201audf2 equ $D202audc2 equ $D203audctl equ $D208skctl equ $D20Ddata_UUA- volume X- LSB of music addresY- MSB of music addres _musini equ * stEdataaUUx _musaddr sty _musaddr+1 and #$0F sta _volume lda #3 sta skctl lda #0 {dataaUU sta audctl ldx #7 lda #0 sta audf1,x dex bpl *-4 rtsdataaUU䠠procedure returns carry set if there is end of music data  _play equ *Tdata_UU lda _musaddr sta _addr lda _musaddr+1 sta _addr+1 inc _musaddr bne *+5 dataaUU inc _musaddr+1 ldy #0_pl1 lda (_addr),y bmi _plx ldx #255_pl2 inx lda _stdataaUUab,x bmi _nos cmp (_addr),y bne _pl2 iny lda (_addr),y cmp #'#' bKdata_UUne _snf inc _musaddr bne *+5 inc _musaddr+1 clc txa adc #14 tax bdataaUU jmp _snf_nos ldx #28_snf ldy _frqtab,x lda #$A0 ora _volume pha ldx #0 dataaUU jsr _sound tya asl @ tay pla ldx #1 jsr _sound clc dataaUU rts_plx lda _addr sta _musaddr lda _addr+1 sta _musaddr+1 lda #0 ldx #3 data_UU sta audf1,x dex bpl *-4 sec rts䠠A- volume + 16 * type XdataaUU- channel's number Y- frequency  _sound equ * pha lda #3 dataaUU sta skctl lda #0 sta audctl txa and #3 asl @ tax tya sdataaUUta audf1,x pla sta audc1,x rtsA- del time * 0.02 sec ldata_UU _wait equ * tax_wal lda rtclock cmp rtclock beq *-2 dex bne _walmdataaUU rtsᠠ_stab dta c'CDEFGAHcdefgah'_frqtab dta b(121),b(108),b(096) dta b(091)dataaUU,b(081),b(072) dta b(064),b(060),b(053) dta b(047),b(045),b(040) dta b(035),b(031) dta b(114SdataaUU),b(102),b(091) dta b(085),b(076),b(068) dta b(060),b(057),b(050) dta b(045),b(042),b(037) ddata6UUta b(033),b(029) dta b(000)_musaddr org *+2_volume org *+1057),b(050) dta b(045),b(042),b(037) HNdataUUdata QA |addataaUUres equ $9000list_all equ %00000111list_mem equ %00000110list_err equ %00000101list_off equ %00000000code_mem equ %0001ldataaUU0000code_dsk equ %00100000 opt list_err+code_mem*--- strona zerowa_ioz0 equ $D0 (2 bajty dla _IO)addr equdata_UU $D2 (adres w buforze)count equ $D4 (liczba bajtow)cntr equ $D7 (licznik)* ,.*--- rozne liczbychan0 equ $0rdataaUU0 (IOCB nr 0)chan1 equ $10 (IOCB nr,1)eol equ 155 (znak konca wiersza)eof equ 136 (status odczytu)* ,*-dataaUU-- komorki systemowedosrun equ $0Adlist equ $230*--- poczatek* ' org adresmain equ * ,XdataaUU* liczba wolnych bajtow sec lda dlist sbc buff sta size+1* wypisanie informacjiloop ldx #chan1 jsr _close jsr dinfo* pobierz znak dataaUU ldx #chan1 jsr _getkey jsr _upper ora #%10000000 cmp read_ch beq read dataaUUcmp writ_ch beq writ cmp tran_ch beq tran cmp quit_ch bne io_error* koniec dataaUU jmp (dosrun)* czytajread jsr get_fn clc odczyt jsr _open bmi io_error lda 7data_UUsize sta used lda size+1 sta used+1 lda used jsr _read wdataaUU cpy #eof bne io_error beq loop jmp* translacjatran jsr get_fn sec zapis dataaUU jsr _open bmi io_error * adres w buforze lda buff sta addr sty addata_UUdr+1 * dlugosc lda used ldy used+1 sta count sty count+1 * rozpakuj 1 wiersztrl dataaUU jsr unpack ldx #chan1 bcc io_error malo danych! * zapis wiersza lda lledataaUUn jsr _write bmi io_error * nastepny? lda count ora count+1 bne trl bdataaUUeq loop jmp* piszwrit jsr get_fn sec zapis jsr _open bmi io_error lda used jsr _write bmi io_error jmp loop* usterkaio_error ldx #chan0 lda <3dataaUUerror ldy >error jsr _write jmp loop*--- rozpakuj wierszunpack ldx #0 ldy #1 QdataaUU lda (addr),y dlugosc sta llen iny bpl chklen jmp* glowna petlaunpk_l lda #0 sta cn dataaUUtr pojedynczy lda (addr),y bpl single and #$7f pha iny lda (addr),y ?data_UU sta cntr zwielokrotniony pla* pojedynczysingle iny* powielanie znakurepeat sta line,X inxdataaUU cpx #64 bcs unret limit=64 dec cntr bpl repeat* czy wszystkie ?chklen cpy llen dataaUU bcc unpk_l* znak end-of-lineunret lda #eol sta line,X* dlugosc otrzymanego wiersza inx stxRdata_UU llen* zwieksz adres clc tya adc addr sta addr bcc *+4 inc addr+1* zmniedataaUUjsz licznik sec lda count sty count sbc count sta count lda count+1 9dataaUU sbc #0 sta count+1* powrot rts*--- pobierz nazwe pliku* 'get_fn jsr _setbin dataaUU ldx #chan0 lda prom jsr _write jsr _settxt lda #120 sta fnlenfdata_UU lda fnlen jsr _read jsr _setbin ldx #chan1 lda fnam rts* ,*--- wyswietl infodinfo jsr _setbin* adres informacji lda msg_ sta _ioz0+1* ile w buforze... ldy message jmp _write*--- procedury WE/WY ------ icl 'C1:_IO'* dataaUU W tym miejscu lepiej* wykonac instrukcje ^kr* edytora i skasowac* pseudoinstrukcje ICL*--- nazwa pdata_UUlikufnlen dta a(0)fnam org *+120*--- informacjeerror dta a(elen)erm_ dta c'Niedobrze!',b(eol)elen edataaUUqu *-erm_message dta a(mlen)msg_ dta b(eol) dta c'׭',b(eol) dta c'w dataaUUbuforze: $....'bu_off equ *-msg_-1 dta b(eol) dta c' wolne: $....'fr_off equ *-msg_-1 dta b&dataaUU(eol),b(eol)read_ch dta c'zytanie 'writ_ch dta c'apis 'tran_ch dta c'ranslacja 'quit_ch dta c'oniec' dtadata_UU b(eol),b(eol)mlen equ *-msg_prom dta a(plen)prm_ dta c'Nazwa pliku?',b(eol)plen equ *-prm_*--- buforydataaUUllen dta a(0)line org *+65size dta a(0)used dta a(0)buff equ **--- adres uruchomienia* org $data#UU2E0* dta a(main) end of filea(0)used dta a(0)buff equ **--- adres uruchomienia* org 1JdataUUdata;RUUPrzyklad wykorzystaniaprocedur _SOUND i _PM  data: 05.04.1990  autorzy: M.L. J.P.  ZdataaUU list_all equ %00000111list_mem equ %00000110list_err equ %00000101list_off equ %00000000code_mem eqdataaUUu %00010000code_dsk equ %00100000 opt list_err+code_memdemonstracja equ $9000* strona 0dosvec equ $0A (2)zedata_UUgar equ $14_sndz0 equ $F0 (2)_pmz0 equ $F2 (2)xpozycja equ $80 (4)ypozycja equ $84 (4)xprzyros equ $88 (4)yprzyrNdataaUUos equ $8C (4)ktoryksz equ $90 (4)numer equ $94* staleduszki equ $A000* systemllosowa equ $D20A***************dataaUU********* org demonstracja jmp poczatek icl 'C:_PM' icl 'C:_SOUND'* W tym miejscudata_UU lepiej* wykonac odpowiednio* instrukcje ^kr edytora* i skasowac pseudoinstrukcje* ICLpoczatek7dataaUU equ * ,, ldx #31 | odwrocodwradus lda ksztdusz+32,x | ksztalt ldy #8 kdataaUU| duszka asl @ | ror ksztdusz,x | dey | bne *-5 | dataaUU dex | bpl odwradus | lda >duszki | wlacz sec | grafikedata_UU jsr _pmon | PM ldy #7 | ustawustapara tya | parame- pha dataaUU | try: ldx kolory,y | kolory ,, ldy #1 -chude | szerokosc jsr _pmset | pdataaUUla | tay | lda llosowa | pozycje x and #$7F | adcdataaUU #$32 | sta xpozycja,y | lda llosowa | pozycje y and #$7F | adc #ddata_UU$32 | sta ypozycja,y | lda llosowa | przyrosty and #1 | bne *+4dataaUU | lda #$FF | sta xprzyros,y | dx lda llosowa | and #1 dataaUU | bne *+4 | lda #$FF | sta yprzyros,y | dy lda llosowa | data_UU sta ktoryksz,y | aktualne dey | ksztalty bpl ustapara | clc tdataaUU| pewne lda xprzyros | duszki adc xprzyros | lataja sta xprzyros | szybciej c9dataaUUlc | lda yprzyros+2 | adc yprzyros+2 | sta yprzyros+2 | clc BdataaUU | lda xprzyros+3 | adc xprzyros+3 | sta xprzyros+3 | clc | data_UU lda yprzyros+3 | adc yprzyros+3 | sta yprzyros+3 | ldx muzyczka | parametry lda #8 | muzyki jsr _musini |tu_skacz lda #3 | petdataaUUla sta numer | glowna*  4 duszkitu_tez ldx numer | duszek ldy ydataaUUpozycja,x | na lda xpozycja,x | pozycje tax | X,Y lda numer | jsgdata_UUr _pmxy | ldx numer | wybierz lda ktoryksz,x | ksztalt inc ktoryksz,x | duszka7dataaUU and #$10 | eor xprzyros,x | and #$30 | clc | addataaUUc ksztdusz | tay Hdata_UU | lda numer | jsr _pmshape | ldx numer | dodaj clc OdataaUU| przyrost lda xpozycja,x | do adc xprzyros,x | pozycji sta xpozycja,x | X duszka c dataaUUmp #$31 | bcc *+6 | cmp #$D0-8 | bcc *+9 | sec dataaUU | lda #0 | sbc xprzyros,x | sta xprzyros,x | clc | a tucdata_UU do lda ypozycja,x | pozycji adc yprzyros,x | Y duszka sta ypozycja,x | cmp #$21 dataaUU | bcc *+6 | cmp #$E0-16 | bcc *+9 | sec | dataaUU lda #0 | sbc yprzyros,x | sta yprzyros,x | dec numer | wszystkie dataaUU bpl tu_tez | duszki ? | nie - | nastepny Tdata_UU | duszek! lda #1 | poczekaj jsr _wait | na koniec | wyswidataaUUe- | tlania | obrazu TV lda zegar  raz na 8 andataaUUd #$07 | ramek TV bne tu_skacz | odegraj | kolejny jsr _play Ldata_UU| dzwiek bcc tu_skacz  jezeli | koniec | muzyczki dataaUU  ,,  to wroc jsr _pmoff  do programu jmp (dosvec) >dataaUU  nadrzednego  !!!!!!! muzdataaUUyczka equ * dta c'c c A A F F G G ' dta c'ce cg Ac AecFA Fc GH GdH' dta c'cegcegAceAecFAcFAcGHdGdH'ldata_UU dta c'cegcegAceAceFAcFAcGHdGHd' dta c'cegcgeAceAecFAcFcAGHdGdH' dta c'cgecegAceAceFcAFAcGHdGHd' dtadataaUU c'cgeECGAecCcCFcAA GdGC c'kolory dta b($38),b($7A),b($C6),b($F0)ksztdusz org *+32 dta b(%00011100) dta bdataaUU(%00111010) dta b(%01111100) dta b(%01010100) dta b(%01111100) dta b(%00111010) dta b(%010001#dataaUU10) dta b(%01111111) dta b(%11101011) dta b(%10111101) dta b(%10101101) dta b(%00111100) `data_UU dta b(%00111100) dta b(%00111000) dta b(%00111100) dta b(%00011110) dta b(%00000110) dtadataaUU b(%00011100) dta b(%00111000) dta b(%01111100) dta b(%01010100) dta b(%01111100) dta b(%0011CdataaUU1000) dta b(%01000100) dta b(%01111110) dta b(%01101110) dta b(%01111010) dta b(%00101100) ydata_UU dta b(%00111100) dta b(%00011000) dta b(%00011101) dta b(%00001110) enddta b(%00101100) mDdataUU