ML}  X c0C)HCCH Mhhݩh `eCDiCD`  RyHP   * 1H0芢@) Y0.Ș`i`#(PM!\ \b Pgi 0  % @ / ՠ`d   0DDԝL `x` `ɜ;H/`TD`EHI B V-U`` /`i% `l Quick Assembler 1.0 by JBWNo room}!`d!qL9eLfLfL/mLMmLiLkfLzfLfLWhL^fLVLhLhLjiLvm v pp m QgL$e f [rr``j`j`` }ʥː``[r$``^r>` ro ep  Dd fhrLdZljjmBhNooozhPg$v'v*v-vh2h:hPhajjjjajlmml;e9e q`pqoroqeuppppp>q[qX/oZ2}prpnpp poMSANRPJBO.6 "$):#&ile%dit2un!ssembly3etup)/error<<</utofmemory<<<.oroom7}ipeall<<<&ilemodified<<3ave#ontinue<&ileexists<<2eplace!bort<&   D0:QA.SETNONAMED0: };q>qD0:Xq]qD0:P:uqwqD0:qqD0:*.*qhr98!&300+*-=~-=,oad<3ave<.ew<$ir<0rn</bj<1uit<7smode!}<2un<-emhi<3avesetup<1asm<"ʔF``Lwd@` ```A `?`pppB@`"}A ````ddo;prvwLvL?wL!wL`wLvLIvLGvLvL0vL9vL|wLwLwLwLwLwH 9vhJJJJ) i`(e`#}H Gvhe`8吅Ƒ8(ƕ`8`` `XY GvLIv$}褙 v< Ie Gv䛐`ȽwwwLGvH Svh v v褚 ]v0 v v w%} wƗLw8eȦ v褚 vLuv w d w wI`Ł* w䖐論 dLw`䖰`hhhh`&}`H w0 wLwIh`FMGVBGNFvwwxx v%uȑΤȄŅĢ'} ) Viȕ󅦅0r +y $;iiؠ 7{ 7{$<b(} _Lqx$I0@ 'd…Lqxp @ zLIx 'di v$ꃑʈ`a{E`e)}橩$ ʥ˰+`@B䃝D僝EAHI dL) `i ɛ` ,{L:z:$@<*}>    y`0L{z0  yXYNԩ@l yɛ' y'  z0 * y+}I`! yɛ ,{ { A`ߝمjjj y { Lz FƢ z80 e y {`,}Lz $P  e`$p&` z` zĥ z zeąeŅ`0$p2`G A:-}8`_A[`H @{hJJJJ) i`)Ƨ$Pʆ |@$[ 8 ĥ.}ȱɛ dįI(!"&` m情ĭiŠȑđH`)Ӧ$ O{)`0@/}  $dLxy |0 |0 |0ݨ |0Ѩ浹ĵ |0 |Į`i ɛ)hi . d毥0}` vĥ v%Ĉ銠%` ĥυ`Ɔ$pL}L}$ʥ˰ zL }ƁP$#)cE1}@<)Ș $d xyL} BHI), d0ܩ d0ե) |Ču} d0 d0 Ȅ 7{櫦2}` y `8 JfJfeũ` }Q)ټ(Ķ$P )ąȱą`iĐ83}Щ 8` yALz yLz }$P }@)` }LzLz@Ĉ 4}ĥąŅ` yNAGAĭ郅Ž:i@ą))?űąıąɛ LzLzL}08eąĥ)?ĢJ5}0ܩǥA };$P1 Lz Ld@LzLd) Lz "ee y  yL86}弅彅Lw`J yL, L5II I   y M]Y)0Lz )L)) 7}y51<)  yLLz`Lz y`)"Lzڥ ) yť)0)040)38}iF 'L€$0 Lz)  $0`i7O$PS8媅嫅8ƥi9}3 LzFf 00 Lzie;00膯 |` y$P  7{ 7{ }):}**|&" #~ ~$0/  ˀɛ yL$P { H @ {h` ܁L ՃHԃH` y_A6ƶ2A;})C E`HL y y ĦLzB$H  LzLzʥ񆴢 |' y@жDf<}$ d | y ЋL灥 ` 700P3.@$ ȥ` 7{L7{ LzLz Lz y@@L=}z@ *d@ $dLxy$`Lz hh$`)PI@) 7!))pJJJJ))`>} Lz |8ȥ` 709* z?#  |ȹ` Lz LzLz恟ꂦ'B#omplete?}&ailure;фeuiaqm}y%5)!1-=9 $,0PpXʈEUIAQM]YLl JFVN^  Hh(*&6.@}>jfvn~@`8xAAABBBBBBBBBBCCCCCCCDDDDEEEEIIIIJJLLLLNOOOPPPPRRRRSSSSSSSTTTTTTDNSCCEIMNPRVVLLLLMPA}PEEETNOQXCNNNMSDDDSOPRRHHLLOOTTBEEETTTAASXXYCDLCSQTIELKCSCDIVPXYCXYADRUTLCXYPRAXYRPTAGAPAPLRISCCDIAXYXYXASA !"B}#$,/2678@DEFHIQV[`aijklmrwxy$$  4, C} 󀀀䀀򀀀D}쀀耀E}倀倀瀀#"@ 0ass,ineD0:xփ 'Õ)-F}LL-Lv'ȭ(ɩ8``d d` {L0(e`Hhui`8H dh ( ȄG})*)`H hJJJJ) )`H 詛ȢȠʩ Jʠ 6 h` | d dH} d dLۈ)?<#' " Lۈ Lۈ`I`Lۈ`I `Lۈ()?Q` L0dɛ@ L? JI} JHH hh?` Y8e` 6  68墨壪 eƅʥeDžeƅ̥eDž`ޥ¥åJ}8…ƥÅX[$00eƅޥeDžߥޥߐ8eƅޥeDž߭`ޭ`ߐeÅe ‘` -dl ‘K}İ‘ץ`لڢȠ 6 YȘ FLLFȠ 6ąŪ¥ÐĤ`L}ɛŢ٦ܽٽڽӖݠ? ݰٙ閈%&@Ӗ`? 詛閤݆8eمi8eمi ӰM} ְ֦ܥٝڝݝӖ轧ȽɐeƝeǝ޹閑و`х҅Ѕ܅ˠɛ Lʠ 6 J N}Ƞ 68܅٥ڥ YȘ FLʥ˰" Y8ӖeL8ӖLO}뽦Ƚɰ8`8}Җi˰-ԖӖ YҖ`ȭɰ8`ʽӖP}Ԗɛ8eiܘIӖ` - WL8}Ӗi` ¥ (`hhL$ - $Q} a (`%`?䚰8` - ܥL - ahhhR}h - L|HH)JJJ` hh`8ʪ˨`%,Q,`0T:`ʽW `8Y `9& XѤȩ ] S} ]XQ J)ȄL: ‹ 獩]Ě :8܅¥8ª8ªŦT} ⽧ӖL)e88ǩ  0 U}0 0 ?i(j%$pFƐ Fǐʆ%EĚ :L`,`EЄ'V}( = - ‹ 8 ְ 8 6LTA[a{M`M`?,` ' Ѓ?H閝W}hɛ,` А ְL ڈ,`0 [  L Õ޽ĕ L l 6 -L -X}Ƞ 6 ʥˢ ܥѐц ‹L? -Ԡ 6 6Ӆ`Lv -נ 6 6օ`Lv - d0EʝD˝EY}8ʝH˝I d%ʅ˅HIe̥e L L'd 8 d DE8HI dL -֦פ Z} 6ӦԤL`Ӡ ԑР ԑhhL$` 8 䑢 6  68 -8ݐ 9eЅ[}i8嬪奰e楥eeee 6 6 ʠ 6 ɛ \}إŦ姐L‹ 8 䑩Р ԑƭ  6ee $0/8娅¥婅 Ċֆׄ8娅¥婅 ĊӆԄLL‹]}Ѕۅ` - 8Ѕ & t`? 獐Ѕ,` Z` `L6 tleӅօ   ? -eЅi^} J ‹( eЅӥ( eЅ֥`Щꖝ> Ӱ ְ` 6 3 TL_}Щ ?` 8 Ԡ 6Ӆ L‹ M``H` h`` 6 ƏL I`Е0Е0 d*>)`K`}Q 8 ڈ d+H |h)*+޽| ޽lP ``I``Ъ)JJJ8j]``` d0a}$P -Ѡ 6$pݐݰ)ɛ#썖:)a{I ݍ8eمِʥˠ $LH  6 6hb}Lv`L | 4)*` TTtt6?󔰔XX򓁓%%tt֍֍.@͒3c}+&ree,o)ns,ine#ol)ns/vr,5op  ~ bkhdrwycvrcbkyf**Kid}i)I)iեԍՍ8ԝL՝M8ֽeօԥeׅՠiԥi Dнѽҽ8Le}Mզѥ D`~%ґ 7 @`) T) M҅ȱ҅׈f} LHMhL Dשֆ8֑ 7L/ґ 7L`i(`T) M҅ȱ҅׈Oשֆ8֑ 7L/ґ 7L`i(`T) M҅ȱ҅׈=` ;x XY  XY1Y2  X` 1xӭIX LمڠƱi}g\Kiתiw gXXX  g, LfЗۢ g'ܭ(j}L,$0 )l LfCUZL B Vi`8gYީY8g٩ڢܽݠeޑȱk}eߑ܈8ّȱڑѭܭݠgא`,0 @`) ې8) 1ggh郐g>h鄰8gّȹgl}ڑЧgȹgЙYYYYYXHHHP٩ڠ8eمِLٍHI٤ȎDE BLVXLFriend 5.2 installed. m}Shft/Ctrl/1 activates Note Pad. Shft/Ctrl/2 activates Code Table. Shft/Ctrl/3 activates Calculator. Shft/Ctrl/4 activates n}Core Eye. This is not XL/XE computer! Can't uninstall XLFriend! Checking... Loading... XLFriend uninstalled.o} H 2)( 3I+I2 ӱ8h `H))h`XH⃌モ gh p}4Z g`HB,: Ң-hLH"Y Ӄhhh@ۀPGLH[8XTZL;XLRXLaX^1,^2,^3,q}^4allLF HELPtdelp=Ctrl,=ShftM(Ѝ ԍ I` ?i(j`x܄ݩمڅ&ݢuٕؤۦX` Yr} VYYY4Z04Zܠ XCUZUZ` Xڠ܎ Y YܩZݢZֈs}eمܐݰXl'` ;X@Ԫ4ZH4Z~鿍9Zj:Z X0٭1.'Bمȱمݢȱ :Z܍9Z5SZ0ZTZ1t}9ZX:ZYYZ Zo/) "/4Z Y Yx4Z Yh4Z X0SZ`Lg XY `σ>"$_bu}D X"/opppBA5ZH]KLH )J JJeDži$LK v}J KʢHZ$0 XʈhfɽZ Jʘi Kмɢ Jĕ򩄑ґ aXH w}J Jh K Jx HZ @X ILH04;20%23¥ â ӡs Х¥LIŽ Vx} $aiU©ZiÊi rI IZƽ I}Z(Z Kа8Z K`ZZ`/y0y}L: aDg@ ;X)ƈƅFȰ` HƢ ӁL~JFȢ (K# ;X JH(H5KH4KHSK i L)Jz}`hhhh` JJ^KH^Kh K`XYSK KRKLKI`8İ`ǥ ǥiĐ` jJ`{} ~J`RK RK`RKRK`SKSK`SKSK`ZKJXK\KVKTK`H) KhJJJJ 0iɑ`e…`|}(e`+*-=<>#JiJ}JJJzJJJJJJbJ [cL<[TagineGotoagL,^S/O^>nsertinebov}}eagQuote@| E[ c ] e_ % I` [ _LV[cccc t[` I`,P?-~} X)?<'Qa{E`I I𰻠8 X \( \ #\Ȅc0cc`H #\hJJJJ) 0c}`XYc \`'i(`8(8('` V \HC [< XhC`H\c}ch`LoadSaveFailEdite`(e`i`` \H cc I` [cɛ+)#~!`՝cc͊} 3]chc`@0 i0HHJ \h7cE.S*CBDcEK t\DcE`CLy\ [}c B Vҩ ` 9]0 [IB8@D|EH V $ y\ ]L]D}HDE}IEплٽD}E ]L[ 9]0 B8HcI t\L]8` N^ei@|8` b ee}eeL^`8 b 8ei N^0 ` +a cXYc}ȄSR0)ȄRII i(j {_Iܩ {_i(XYc ?\ \`H _ `bh`Hei} \^ɛh`eiL^ \$0C-Lb=Lb e.L]c%c Ab ,\ \LT\c ,\ ?\}c` Tcɛ  c _L`b jckclM [⪩% [D [8@쪩|4 [XY' a}Ԡ'5%ɛc X`('穛 \' ȱE \}cL`O'c XIʈL\hh ,\c T\`` -b$ɛ b _ c _누ɛLb` c }c bȘ ^( ` cȘ \^` 8e 7c8e b8eL}pb` c c Ab`` AbL c b cLb cLb`ɛ b c b 7cc} 7c ɛ`c Ab`c pb``` b` `cIc` Ab}` pb c`Hh`ɛLHcɛ \`~  )a9aAbpb-b`b>aCac }c_`bcbb|aa]-^b_EditD1:Free:Line:Col:cc MOL(MTAB}odeA:tascii,:nternal,:eycodeXmO̥YiͬO GO YO̅ΥͅϢQE N O+ N ;OOOHΠȭO XΈOO}O8mO͌OO8e΍MiM ;OhиZC N OH X) Nh! NJJJJO X (jMOO O}LNiOO8OLN#O0iOLN8OOiOLN ΎOLN ?OLNɇOnO SOLNɆOV}O SOLNɎO<ΐO SO8(̰LNɏOO SO GOLN,OLN LSO XLN YO OLDM 5OR 5OBH 5O }5OȩJh "O&O XO "O H +OhJJJJ) i Έ`i(ΐ`i(̐` X }O٢kνOH̝Oḧ0ܘ8}୐O i( ` @FL[@ddubtractroductivonlyyteositiventegerllowed5U8@@hC X ALg@ 7E} |D D 9AʍQ٭Eƈ-~EE@E@ X @L9AFԄՌFFȌFF agV80] Y0S}O XFF ԆՎFFHԍ FՍFHHF{E֩ Bhhh FԭFL9ALg@eԅԥiՠF E D:Ј)}F F-Р:F) E ELAԤ XH: E Eh ELAԅҥՅӢFf*Јȱ :Lg@F`F}FF FF`FFFFFFFԅ֥Յ`F FFFF`H iBhFFFFԅ֥Յ`F ԍ FՍFLZBԅ֥Յ׭ }FԭFբFFFFFEҽE BF`leօԥeׅՐLC8ԅԥՅհLC҅ӥ֍F׍F&Ӑ FԭFLC&} HըeօҥeׅӘhɥ҅ԥӅ`LC)%Щ< X8`҅8ԅҥՅeԅҥeՅ&&<C&&}&ffӥօԥׅ`Uԕ`F ZBFeԍFFeՍFF`F ZB8FԍFFՍFLCFFFFF`FԭF}FF` F`8F(FF F D D |DLD F`Fi(FF F D D |DLD F`FF F D D |DLD F=FF}F F D D |DLDHHԅ֥Յ׮F{Eԩ Bhh`XmFХYmF`ЍDDэDDDDFDD FDDDD}DDDDDi(DDDDF` Dhhhh m F `H EhJJJJ) iЈ`FʘHFʈhF`ڠ E}F EFѠ E< EEYFEFEF` DAAA6B9DDCC~XD!>-}>$#,2>/\ >("30>%\ >"%3#{DBBBBdCdCdC" GGL*G>agepABode-=~-=}registers<<30<0#<&<!<8<9<<uu-XuuL ~XZu_/2sops1}ss uYu@pppBAuu"ʔFpp@puv{}LvLz1u) !0!)u)uu $x1u 1u `z,7u+u$uP1u) `xx x wLly jz{ L:z{ {}xʽ{x{'ٸ{Lw1u)  {v{vLv` 1u) LxL 1u) WzLJxɾ Lzu {L4wɶ Lzu y{L4}wɖ Lw1u) Ч Wz WzLWx 1u) Г WzLox Lz &{1u)!0!)u)xx $x1u 1u `zx)Lw}Lw1u)!0!)u)xx $x1u 1u `zxwͲ{xw{Ͷ{{ 1u 1u`x{x1u) =)8)3 Wz}uuuHu(uhuuu({muuu`=xBxH h u u u uJJ(`xuxu`xfxxgxexu`}x{xuH((Lx(x0 xLx xuuu`1u) uLCzuiui y xuu yxuxuLWz1u)uLCzu }y WzLx1u) uLCz zu WzLx1u) uLCz zu zu zuLWz1u @1u`1u)uLCzu y WzLx1u) uLC}z zu zu WzLx1u) uLCz zuH({uhu( WzLxuuLxuH(uhuuLx{1u)(0#)u)u $x})u)71u 1uhh`{utu`1u)0)u)uȘ $x1u Ǯut{u`1u 1u`1u 1u`x) x`1u)1u`1u=}{1u`uzu{zz{zz{z͵{zz` jz{xɾ u {L{ɶ u y{L{ɖLz @L}nLϒBC }E } e i Le8I @ Ԡ ! ' ` ԅʆee !}L! :l4,()" 0 ) JJ)`HJJJ)" h`  @`)  )} `JJJ)***)) `tsNR!T D ar BҐb̊ BM}RTHCLLSEEYDAãPN"N# E3 TDPX 8  9 8 9 8}  "LLɖLLLDL/L•LĕLfhdgsaLJ:K\^OPUI_|VCBXZ$#&%"![ ]NM?REYTWQ()'@}FHDGSA {   `} } BDE"HILVPress SHIFT/BREAK to get control 'uwMii})I)iեԍՍ8ԝN՝O8ֽeօԥeׅՠiԥi Fнѽҽ8NԥOզ}ѥ FLd~%ґ 9 @`) T) M҅ȱ҅׈ NH}OhL Fשֆ8֑ 9L1ґ 9L`i(`T) M҅ȱ҅׈ NHIɯϠ  file:_IO.ASM  date:90.03.24  author:J.B.Wi$nie}wski   _iocb equ $340_ciov equ $E456_skctl equ $D20F} A: letter-parameter  A: result  _upper cmp #'a' } bcc _upp_r cmp #'z'+1 bcs _upp_r eor #$20_upp_r rts󠠠 A: da}ta byte (_ioz0): message addr  Y: 2nd digit  offset  _phex } pha jsr _pxdig pla lsr @ lsr @ lsr @ lsr @_pxdig and #%00001111 } ora #'0' cmp #'9'+1 bcc *+4 adc #6 sta (_ioz0),Y dey rts}젠 X: channel# * 16  A,Y: fspec address  CY: read=0, write=1  }_open sta _iocb+4,X tya sta _iocb+5,X lda #3 sta _iocb+2,X lda #4 b}cc *+3 asl @ (*2) sta _iocb+10,X lda #0 sta _iocb+11,X jmp _ciov}젠 X: channel# * 16  _close lda #12 sta _iocb+2,X jsr _c}iov php lda #3 sta _skctl (keep silence) plp rts } X: channel# * 16  A,Y: data address  _write sta _ioz0 sty _ioz0+1 }clc adc #2 sta _iocb+4,X bcc *+3 iny tya sta _iocb+5,X lda #8} ora _iomode sta _iocb+2,X ldy #0 lda (_ioz0),Y sta _iocb+8,X iny } lda (_ioz0),Y sta _iocb+9,X jmp _ciovᠠ X: channel# * 16  A,Y: data} address  _read sta _ioz0 sty _ioz0+1 clc adc #2 sta _i}ocb+4,X bcc *+3 iny tya sta _iocb+5,X lda #4 ora _iomode sta _}iocb+2,X ldy #0 lda (_ioz0),Y sta _iocb+8,X iny lda (_ioz0),Y sta _iocb}+9,X jsr _ciov ldy #0 lda _iocb+8,X sta (_ioz0),Y iny lda _iocb+9,X } sta (_ioz0),Y ldy _iocb+3,X rts堠 _settxt: text mode  _setbin: bin}ary mode  _settxt lda #1 bpl *+4 (jmp)_setbin lda #3 sta _iomode rt}s A: character to put  _putch tay lda _iocb+7 } pha lda _iocb+6 pha tya rts X: channel# * 16  A}: result  _getkey lda <_kbdnam ldy >_kbdnam clc (read) jsr _}open lda #7 sta _iocb+2,X lda #0 sta _iocb+8,X sta _iocb+9,X jsr _ciov} pha jsr _close pla rtsᠠ _kbdnam:keyboard name  _iomode:m}ode of I/O  _kbdnam dta c'K:',b($9B)_iomode dta b(3) end of fileame  _iomode:ml͠  file: _PM.ASM  date: 01.04.1990 author: }  Miroslaw Liminowicz  *- page 0_pmtmp equ _pmz0 (2)_pm}point equ _pmz0+2 (2)*- system variablessdmctl equ $22Fgprior equ $26Fpcolr0 equ $2C0hposp0 equ $D000gractl equ $D01}Dsizep0 equ $D008pmbase equ $D407͠A- MSB PM area C=0 two line resolutionC=1 one} line resolution _pmon and #%11111000 sta pmbase sta _pmaddr lda sdm}ctl and #%11101111 sta sdmctl lda #0 rol @ sta _pmres asl @ as}l @ asl @ asl @ ora sdmctl ora #%00001100 sta sdmctl lda gprior } and #%11000000 ora #%00001000 sta gprior lda #%00000011 sta gractl lda #0  } ldx #7_pmout sta hposp0,x sta sizep0,x sta _pmpx,x sta _pmpy,x dex bpl  }_pmout jsr _pmpadr ldx _pmres inx txa asl @ tax ldy #0  } tya_pmcpage sta (_pmtmp),y iny bne *-3 inc _pmtmp+1 dex bpl _pmcpage  } lda #4 jsr _pmpadr lda #0 tay sta (_pmtmp),y iny bne *-3  } rts͠_pmoff lda sdmctl and #%11100011 sta sdmctl lda #0 st}a gprior sta gractl ldx #7_clppos equ * sta hposp0,x dex bpl _clppos }rtsA- player's number X- color of player Y=1 normal width Y=2 double wid}th Y=4 quadruple width  _pmset and #3 sta _pmhelp txa ldx} _pmhelp sta pcolr0,x dey tya and #%00000011 sta sizep0,x rts}A- player's number X- horizontal position Y- vertical position  _p}mxy and #7 sta _pmhelp txa ldx _pmhelp sta _pmpx,x sta hposp0,x tya} pha txa jsr _pmpadr pla ldx _pmres bne *+4 and #$7F } ldx _pmhelp ldy _pmpy,x sta _pmpy,x cpx #4 bcs _pmmisil pha ldx #}0_pmcptb lda (_pmtmp),y pha lda #0 sta (_pmtmp),y pla sta _pmbuf,x i}ny tya and #$7F bne *+13 lda _pmres bne *+8 tya and #$80 } eor #$80 tay inx cpx #16 bcc _pmcptb pla tay ldx #0_pmc}pob lda _pmbuf,x sta (_pmtmp),y iny tya and #$7F bne *+13 lda _pmres } bne *+8 tya and #$80 eor #$80 tay inx cpx #16 bcc _pmc}pob rts_pmmisil pha dex dex dex dex lda (_pmtmp),y and _pm}mask,x sta (_pmtmp),y pla tay lda _pmmask,x eor #$FF ora (_pmtmp),y } sta (_pmtmp),y rtsA- player's number X- LSB addres of shape Y- MSB ad}dres of shape  _pmshape stx _pmpoint sty _pmpoint+1 cmp #4 bcc *+3 } rts sta _pmhelp tax lda _pmpx,x sta hposp0,x txa jsr _pmpadr  } ldy _pmhelp ldx _pmpy,y ldy #0_pmcppl lda (_pmpoint),y sty _pmhelp pha tx!}a tay pla sta (_pmtmp),y tya tax inx txa and #$7F "} bne *+13 lda _pmres bne *+8 txa and #$80 eor #$80 tax ld#}y _pmhelp iny cpy #16 bcc _pmcppl rts_pmpadr pha $} lda #0 sta _pmtmp ldx _pmres inx txa asl @ ,clc tax adc %}_pmaddr sta _pmtmp+1 pla cmp #4 bcs _pmisile tax_pmsearc dex bpl *+3&} rts clc lda _pmtmp adc #$80 ldy _pmres beq *+4 adc #$80 '} sta _pmtmp bcc *+4 inc _pmtmp+1 jmp _pmsearc_pmisile ldx _pmres_pmis1 sec lda _p(}mtmp sbc #$80 sta _pmtmp lda _pmtmp+1 sbc #0 sta _pmtmp+1 dex )}bpl _pmis1 rts**********************- My variables_pmaddr org *+1_pmres org *+1_pmhelp org *+1_pmpy *} org *+8_pmpx org *+8_pmbuff org *+16_pmmask dta b(%11111110) dta b(%11111011) dta b(%11101111) +} dta b(%10111111) end of filemmask dta b(%11111110) dta b(%11111011) dta b(%11101111) /䠠  file: _SOUND.ASM  date: 01.04.1990  author: Janusz Pelc -}  * page 0_addr equ _sndz0 (2)* systemrtclock equ $14audf1 .}equ $D200audc1 equ $D201audf2 equ $D202audc2 equ $D203audctl equ $D208skctl equ $D20D/}A- volume X- LSB of music addresY- MSB of music addres _musini equ *0} stx _musaddr sty _musaddr+1 and #$0F sta _volume lda #3 sta skctl 1} lda #0 sta audctl ldx #7 lda #0 sta audf1,x dex bpl *-4 r2}ts䠠procedure returns carry set if there is end of music data  3} _play equ * lda _musaddr sta _addr lda _musaddr+1 sta _addr+1 inc _mu4}saddr bne *+5 inc _musaddr+1 ldy #0_pl1 lda (_addr),y bmi _plx ldx #255_p5}l2 inx lda _stab,x bmi _nos cmp (_addr),y bne _pl2 iny lda (_addr),6}y cmp #'#' bne _snf inc _musaddr bne *+5 inc _musaddr+1 clc tx7}a adc #14 tax jmp _snf_nos ldx #28_snf ldy _frqtab,x lda #$A0 ora _vol8}ume pha ldx #0 jsr _sound tya asl @ tay pla ldx #1 9} jsr _sound clc rts_plx lda _addr sta _musaddr lda _addr+1 sta _musa:}ddr+1 lda #0 ldx #3 sta audf1,x dex bpl *-4 sec rts;}䠠A- volume + 16 * type X- channel's number Y- frequency  _sou<}nd equ * pha lda #3 sta skctl lda #0 sta audctl txa and #3=} asl @ tax tya sta audf1,x pla sta audc1,x rts>}A- del time * 0.02 sec _wait equ * tax_wal lda rtclock cm?}p rtclock beq *-2 dex bne _wal rtsᠠ_stab dta c'CDEFGAHcdef@}gah'_frqtab dta b(121),b(108),b(096) dta b(091),b(081),b(072) dta b(064),b(060),b(053) dta b(0A}47),b(045),b(040) dta b(035),b(031) dta b(114),b(102),b(091) dta b(085),b(076),b(068) dtaB} b(060),b(057),b(050) dta b(045),b(042),b(037) dta b(033),b(029) dta b(000)_musaddr org *+2_volC}ume org *+1 end of file(045),b(042),b(037) dta b(033),b(029) dta b(000)_musaddr org *+2_vol$| Zastosowanie _IO.ASM:|| - kopier/translator || JBW Assembler --> QA |E}adres equ $9000list_all equ %00000111list_mem equ %00000110list_err equ %00000101list_off equ %00000000code_mem equF} %00010000code_dsk equ %00100000 opt list_err+code_mem*--- strona zerowa_ioz0 equ $D0 (2 bajty dla _IO)addG}r equ $D2 (adres w buforze)count equ $D4 (liczba bajtow)cntr equ $D7 (licznik)* ,.*--- rozne liczbychaH}n0 equ $00 (IOCB nr 0)chan1 equ $10 (IOCB nr 1)eol equ 155 (znak konca wiersza)eof equ 136 (status odczytuI})* ,*--- komorki systemowedosrun equ $0Adlist equ $230*--- poczatek* ' org adresmainJ} equ * ,* liczba wolnych bajtow sec lda dlist sbc buff sta size+1* wypisanie informacjiloop ldx #chan1 jsr _close jsr diL}nfo* pobierz znak ldx #chan1 jsr _getkey jsr _upper ora #%10000000 cmp read_chM} beq read cmp writ_ch beq writ cmp tran_ch beq tran cmp quit_ch N} bne io_error* koniec jmp (dosrun)* czytajread jsr get_fn clc odczyt jsr _open O} bmi io_error lda size sta used lda size+1 sta used+1 lda used jsr _read cpy #eof bne io_error beq loop jmp* translacjatran jsr get_Q}fn sec zapis jsr _open bmi io_error * adres w buforze lda buff sta addr sty addr+1 * dlugosc lda used ldy used+1 sta count S} sty count+1 * rozpakuj 1 wiersztrl jsr unpack ldx #chan1 bcc io_error malo danych! * zaT}pis wiersza lda llen jsr _write bmi io_error * nastepny? lda couU}nt ora count+1 bne trl beq loop jmp* piszwrit jsr get_fn sec zapis V} jsr _open bmi io_error lda used jsr _write bmi io_error W} jmp loop* usterkaio_error ldx #chan0 lda error jsr _write jmp loop*X}--- rozpakuj wierszunpack ldx #0 ldy #1 lda (addr),y dlugosc sta llen iny bY}pl chklen jmp* glowna petlaunpk_l lda #0 sta cntr pojedynczy lda (addr),y bpl single Z} and #$7f pha iny lda (addr),y sta cntr zwielokrotniony pla* pojedy[}nczysingle iny* powielanie znakurepeat sta line,X inx cpx #64 bcs unret limit=64 \} dec cntr bpl repeat* czy wszystkie ?chklen cpy llen bcc unpk_l* znak end-of-lineunret lda #eol]} sta line,X* dlugosc otrzymanego wiersza inx stx llen* zwieksz adres clc tya ^} adc addr sta addr bcc *+4 inc addr+1* zmniejsz licznik sec lda count _} sty count sbc count sta count lda count+1 sbc #0 sta count+1* powrot `} rts*--- pobierz nazwe pliku* 'get_fn jsr _setbin ldx #chan0 lda prom jsr _write jsr _settxt lda #120 sta fnlen lda fnlb}en jsr _read jsr _setbin ldx #chan1 lda fnam rts* ,c}*--- wyswietl infodinfo jsr _setbin* adres informacji lda msg_ d} sta _ioz0+1* ile w buforze... ldy message jmp _write*--- procedury WE/WY ------ icl 'D1:_IO'*--- nazwa plikufnlen r} dta a(0)fnam org *+120*--- informacjeerror dta a(elen)erm_ dta c'Niedobrze!',b(eol)elen equ *-erm_s}message dta a(mlen)msg_ dta b(eol) dta c'׭',b(eol) dta c'w buforzet}: $....'bu_off equ *-msg_-1 dta b(eol) dta c' wolne: $....'fr_off equ *-msg_-1 dta b(eolu}),b(eol)read_ch dta c'zytanie 'writ_ch dta c'apis 'tran_ch dta c'ranslacja 'quit_ch dta c'oniec' dta v}b(eol),b(eol)mlen equ *-msg_prom dta a(plen)prm_ dta c'Nazwa pliku?',b(eol)plen equ *-prm_*--- buforyw}llen dta a(0)line org *+65size dta a(0)used dta a(0)buff equ **--- adres uruchomienia* x}org $2E0* dta a(main) end of file0)used dta a(0)buff equ **--- adres uruchomienia* 5Przyklad wykorzystaniaprocedur _SOUND i _PM  data: 05.04.1990  autorzy: M.L. J.P. z} list_all equ %00000111list_mem equ %00000110list_err equ %00000101list_off equ %00000000code_{}mem equ %00010000code_dsk equ %00100000 opt list_err+code_memdemonstracja equ $9000* strona 0dosvec equ $|}0A (2)zegar equ $14_sndz0 equ $F0 (2)_pmz0 equ $F2 (2)xpozycja equ $80 (4)ypozycja equ $84 (4)xprzyros equ $8}}8 (4)yprzyros equ $8C (4)ktoryksz equ $90 (4)numer equ $94* staleduszki equ $A000* systemllosowa equ $D20A~}************************ org demonstracja jmp poczatek icl '_SOUND' icl '_PM'poczatek} equ * ,, ldx #31 | odwrocodwradus lda ksztdusz+32,x | ksztalt ldy #8 } | duszka asl @ | ror ksztdusz,x | dey | bne *-5 }| dex | bpl odwradus | lda >duszki | wlacz sec | }grafike jsr _pmon | PM ldy #7 | ustawustapara tya | parame- pha} | try: ldx kolory,y | kolory ,, ldy #1 -chude | szerokosc jsr _pmset } | pla | tay | lda llosowa | pozycje x and #$7F } | adc #$32 | sta xpozycja,y | lda llosowa | pozycje y and #$7F } | adc #$32 | sta ypozycja,y | lda llosowa | przyrosty and #1 } | bne *+4 | lda #$FF | sta xprzyros,y | dx lda llosowa |} and #1 | bne *+4 | lda #$FF | sta yprzyros,y | dy } lda llosowa | sta ktoryksz,y | aktualne dey | ksztalty bpl ustapara } | clc | pewne lda xprzyros | duszki adc xprzyros | lataja sta }xprzyros | szybciej clc | lda yprzyros+2 | adc yprzyros+2 | sta }yprzyros+2 | clc | lda xprzyros+3 | adc xprzyros+3 | sta xprzyros+}3 | clc | lda yprzyros+3 | adc yprzyros+3 | sta yprzyros+3 | } ldx muzyczka | parametry lda #8 | muzyki jsr _mu}sini |tu_skacz lda #3 | petla sta numer | glowna*  4 duszki}tu_tez ldx numer | duszek ldy ypozycja,x | na lda xpozycja,x | pozycje tax } | X,Y lda numer | jsr _pmxy | ldx numer | wybierz lda kto}ryksz,x | ksztalt inc ktoryksz,x | duszka and #$10 | eor xprzyros,x | a}nd #$30 | clc | adc ksztdusz | tay | lda numer | jsr _pmshape |} ldx numer | dodaj clc | przyrost lda xpozycja,x | do adc xprz}yros,x | pozycji sta xpozycja,x | X duszka cmp #$31 | bcc *+6 | }cmp #$D0-8 | bcc *+9 | sec | lda #0 | sbc xprzy}ros,x | sta xprzyros,x | clc | a tu do lda ypozycja,x | pozycji a}dc yprzyros,x | Y duszka sta ypozycja,x | cmp #$21 | bcc *+6 | c}mp #$E0-16 | bcc *+9 | sec | lda #0 | sbc yprzyr}os,x | sta yprzyros,x | dec numer | wszystkie bpl tu_tez | duszki ? } | nie - | nastepny | duszek! lda #1 } | poczekaj jsr _wait | na koniec | wyswie- | tlan}ia | obrazu TV lda zegar  raz na 8 and #$07 | ramek TV } bne tu_skacz | odegraj | kolejny jsr _play | dzwiek bcc tu_skac}z  jezeli | koniec | muzyczki  },,  to wroc jsr _pmoff  do programu jmp (dosvec)  nadrzednego }  !!!!!!! muzyczka equ * dt}a c'c c A A F F G G ' dta c'ce cg Ac AecFA Fc GH GdH' dta c'cegcegAceAecFAcFAcGHdGdH' dta c'cegc}egAceAceFAcFAcGHdGHd' dta c'cegcgeAceAecFAcFcAGHdGdH' dta c'cgecegAceAceFcAFAcGHdGHd' dta c'cgeECGAecCcC}FcAA GdGC c'kolory dta b($38),b($7A),b($C6),b($F0)ksztdusz org *+32 dta b(%00011100) dta b(%00111010)} dta b(%01111100) dta b(%01010100) dta b(%01111100) dta b(%00111010) dta b(%01000110) } dta b(%01111111) dta b(%11101011) dta b(%10111101) dta b(%10101101) dta b(%00111100) dta} b(%00111100) dta b(%00111000) dta b(%00111100) dta b(%00011110) dta b(%00000110) dta b(}%00011100) dta b(%00111000) dta b(%01111100) dta b(%01010100) dta b(%01111100) dta b(%0011}1000) dta b(%01000100) dta b(%01111110) dta b(%01101110) dta b(%01111010) dta b(%00101100)} dta b(%00111100) dta b(%00011000) dta b(%00011101) dta b(%00001110) end b(%00101100)p