' +JJJJ ?\>m0M='+l> /+l   d']6@5L&]655]6LF%5 & "L}"BB5L&]6 X  `6 77777777777JJJJx 77L? L7877777777 776i 7 7867 7`77 777777`x =(`(8`5775I7`B` 76`77`>J><;VU<)?<`8'x0|<&HhHh 8 8 8 8V&` aI꽌ɪVɭ&Y:&<&Y:&;: 꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xS&x'8*3Ixix&& 8 9: :' 9: :& :x)*++`FG8`0($ p,&"ųųೳŪŪųųij  !"#$%&'()*+,-./0123456789:;<=>?8  1 '" *"( (9"1 ( ,.(0# 2  /#0/#0 *?'#07#000'#07#0:"4<*55**5*%5)1)1)1)'#0/#0*5*75**5*:5/#0/#0'#07#0:::*::'#07#0"):$(%"%:$(%"%$$2%4%$$2%4%$(2()!)E(!8b $!H(+ "@H !D)"E` @ $ C ` DQ &J80^݌Hh < <݌ < < h < < < <`HJ>݌h Hh݌`葠葠ȔЖȔЖȠHIHHHHhHH݌hHhHh݌H6 (G FG HZXj 80x D9$xxH` >( Z>h Z>L=.xxH >hh@(LH>9L>HH/Hh/ H?-З( 8(& 8$8 H` *8HNx`* >x$50x*$50xL9JJJJ`HHjf5 >h $50x`HA>VD;;P >(ED Z> ?$0x8x D9- 8DD# H8`?E Vˆʎ55L $ 5 55555 &a*5`*5` "L&5_*b*JL%u**Lz%`** $  Q(lXJ̥KlV $  Q(lV eօ3L e3L &%R*L &%Q*L d' "L4% N'e*)n*5 5 &`@-e*f*f* 5 "L# "5f*`L %.* *t*Q*L$ %L&*L` "O**P**u** d' "L% N'e*)n*o*o*n* &8ɍ` ^&f\*555L& ^&NR* & "R*ΩL&)\*Z* ʽ LH*v 3h`0h8` " ['L & N'С55 &5`*A*@` +5L^6L65`  \* ?*0 '\* '  Q( ^&\*lZl^?*c*q)H c*h`f*5h*5j*555@O*AP*`u*@`@5&`Q*R*`E 'Ls' ' ' @DAE@u*`8` %@ @A@`@`**@*A`M5 ) "L&`8@AW*c*@8@-@HAȑ@hHȑ@ȑ@hHȑ@Ȋ@c*h8&ȑ@Hȑ@Ah@L'Hȑ@ȑ@* htphso`hMhL`9V*8U*897T*6S*67`INILOASAVRUCHAIDELETLOCUNLOCCLOSREAEXEWRITPOSITIOOPEAPPENRENAMCATALOMONOMOPRINMAXFILEFINBSAVBLOABRUVERIF!pppp p p p p`" t""#x"p0p@p@@@p@!y q q p@  LANGUAGE NOT AVAILABLRANGE ERROWRITE PROTECTEEND OF DATFILE NOT FOUNVOLUME MISMATCI/O ERRODISK FULFILE LOCKESYNTAX ERRONO BUFFERS AVAILABLFILE TYPE MISMATCPROGRAM TOO LARGNOT DIRECT COMMANč$3>L[dmx- (   Ϡ734@~3!+,W,o,*--,,9,-.-~3~3,,,,~3~3,,,,~3_*3 j.5 *H*H`Lc3 (+L3 +55555 1^3_* )3J Q*L_3Ls3443 D23455545554 70 / 7 :/354545455454555535L^/5-5I5555 55` / 4/ 2-5! / 08555454 70L3 (+50+5B5C3 2 70L35 *H*H`Lg3L{3505 *H*H` 3 ,5L3 3 1 ,H 1hBL, 0 BH [1 1h`Lo3 35 ,L3 3 1B , 1L,H 0hB@ 55 [1L133 (+34) 34 70L3 3L3 (+ 055L- (+34L{33454445 70 ^/* / 3B0 HȱBh -355 -8 /L38 25` +5 /3 /. /. 3 E7D B. /. /. 0]34S0J4 4) 3 4D4E B. 4  /. 02L3 Ν3 3`HD٤33DEEhiHLG.h ` /5B5-` /5B-` + X05I33383 33DH /4 E03744Ȍ7 X040 7 J7L35B5C`,5p` / R0-55`50` K/ R0-55`575755` 4/ K/ /( 55L/BȱBL/58` D2BH5BH :/ 75Bȭ5Bhh55 R0B5m55ȱB5m55` /LR0557755`*7*75LR0 E0(33 48`433 R0` E033LR0*7*7`777 555I7575757577** 7757`7 L35555f /55555555 ^/`855 i /B58` 41L 15ȱB5 /5555 /5`3 D23ȑB55B5 / 7 55`5555555555 5555`555`55BC55`5555`L3 /5B5C355 0Q340"B4 3` 02۰Ϭ33B438`3i#`3ЗLw35!50>5555`53 /3m3 3 3733i35 3583 /35ЉLw35`H /5h 25L/~43 533`55555555J5m55m5jn5n5n5ۭ55m5555m55m55`"L? 585H ~.(3` # d ֠z# u*` |" V " C| | D| |" V " E| | F| |" . " -------------------------------------" - FF PRI |" V "C 6| |T 7| |" V "O 8| |R 9| |" V " A| | B| ----------|" -V " 0| | 1| |" V " 2| | 3| |" V "S 4| |E 5| RT DESTINATION DISK IN DRIVE 1." I FF ^TEXT " TRACK -------------------------------------" V " |00000000000000001111111111111111222| |0123456789ABCDEF0123456789ABCDEF012|" E. " |------------------------- SECTOR  TRACK TRACK #$23 FREE  SECPRT TRACK  #$4 $24 SECTOR  #$5 $25 $FC22 #"+" $FDED FREESEC F 6BTXT " CRACKBOOT 1.0 "  8D8D8D8D8D8D8D8D D) "INSE#$60 $B7F1 #$0 $B7F0 TRACK #$F SECTOR FREE TRACK $B7EC SECTOR  $B7ED #$B7 #$E8 $BD00 #$0 FREE1 $6000,Y #$0 FREE2  #$00 FREE1 SECPRT FREE2 SECTOR FREE #$F 1 $2800 BEG TRACK 1 SECTOR 1 FREESEC 1 BEG $FC58 /BTXT #BTXT PRINT #$0 FREESEC F $C010 I1 $C000 I1 $C010 $FC58 /TEXT #TEXT PRINT #$0 $B7EB #$1 $B7F4        L BL    ōL*L    L .L    L   L    s    . L #  L /  -   '    .   L L  L%      . L L  `  L. ` Ҡà͠ɠź o Ġ ɍʅ˅L M `  L . `3 Q = ٩3 ΠíčŠíčӍ  / ٠ L ҠL Ԡ L  . I ՠL ڠL  $I0 ; L  AAG=) Ll 0:, `, ` ) ee L `H HH hehe h` && ` . -    L H h`  ``hh  L+ l O-T7HAAKDL QL& Ġ L Ǡ L ʠ L ؠ L à  . -   L     L  L  . #    R ADDR+1 BDDR+1 LLLM ; CDDR MOVR3 CDDR+1 MOVR3 CDDR ; BDDR MOVR4 BDDR+1 MOVR4 BDDR MOVR1 ; ; ; LLLM      ;: ;: ;:  PGMLEN *-START LAST BERLAP. ;: ;: MOVR     ; #0 MOVR0 ADDR+1  BDDR+1 MOVR1 ; (BDDR),Y (CDDR),Y  BDDR+1 CDDR+1 ; MOVR2 (BDDR),Y (CDDR),Y  MOVR2 MOVR0 ; ; MOVR1 (BDDR),Y (CDDR),Y ; ADDR BDDL2 ; ;       ; ;: ;: ;: ;:****************** ;: ;: MOVR-MOVE RIGHT ;: MEMORY TRANSFER, ;: OPERATES IDENTIC-` ;: ALLY TO MOVL ;: EXCEPT YOU USE ;: MOVR WHEN ;: CDDR > ADDR AND ;: THE SOURCE AND ;: DESTINATION ;: BLOCKS OV BDDR+1 MOVL2 ; MOVL3 (ADDR),Y (CDDR),Y  MOVL3 ; ADDR+1 CDDR+1 MOVL1 ; MOVL2 (ADDR),Y (CDDR),Y CDDR MOVL4 CDDR+1 ; MOVL4 ADDR MOVL5 ADDR+1 ; MOVL5 BDDR ADDR BDDR+1 ADDR+1 MOV MOVL-MOVE LEFT ;: MOVE MEMORY BLOCK ;: ADDR.BDDR TO ;: CDDR.(CDDR + (BDDR ;: - ADDR)) ;: ;: USE IF NO OVERLAP ;: OF DESTINATION AND ;: SOURCE BLOCKS, OR ;: IF CDDR <= ADDR ;: ;: ;: MOVL     ; #0 MOVL1 ADDR+1 UND ;: NO CHECK FOR OVER- ;: FLOW IS MADE. ;: CVDH 00 ADDR ADDR+$01 ; CVD1 PAG2,Y #'0' #10 CVDX ML10  ADDR ADDR CVD2 ADDR+$01 CVD2 CVD1 ;: CVDX #'0'  ;: ;: ;:****************** ;: ;:  ADDR+$01 ADDR+$01   ;: ;: ;:****************** ;: ;: CVDH CONVERTS A ;: DECIMAL # TO BIN- ;: ARY. THE Y-REG. ;: POINTS TO THE ;: ASCII REP. OF THE ;: DECIMAL # IN PAGE ;: 2. THIS ROUTINE ;: CONVERTS UNTIL A ;: NON-DIGIT IS FO NXTCHR ; CR : CELN CRLF       ; ;: ;: ;:****************** ;: ;: ML10 MULTIPLIES ;: ADDR BY 10 ;: ML10 ADDR ADDR+$01 ADDR+$01  ADDR ADDR ADDR+$01 ADDR ADDR+$01  ADDR ADDRGHT #CNTRLO UP #CNTRLX CANCEL ; PUTC  NXTCHR ; ; CANCEL : '/ PUTC CRLF BELL NEWLN ; ; UP : UP.. NXTCHR ; ; RIGHT : CUCURS PUTC NXTCHR ; LEFT : DOBS NXTCHR ; DOWN : DOLFEWLN : #$1 ; BCKSPC :  ; NXTCHR : RDKY 08 NOTBS #$0 NXTCHR PUTC BCKSPC ; NOTBS : #CNTRLU ADDINP CUCURS #$7F ; ADDINP : INPUT,X 0D CR ; ; #CNTRLJ LEFT #CNTRLL DOWN #CNTRLK RI #TRUE SHIFTL  ;: ;: ;:****************** ;: ;: ;: ;: RDLN READS A LINE ;: FROM KYBRD AND ;: PUTS THE RESULTING ;: LINE IN PAGE 2. ;: THE LINE IS DELIM- ;: ITED BY THE RETN ;: CHARACTER. ;: ;: RDLN :      ; NV2  ;: ;:****************** ;: ;: INIT PREPARES THE ;: VARS USED BY LZR ;: IOS. ;:-----------------: ;: THIS ROUTINE : ;: MUST BE CALLED : ;: BEFORE ANY LIOS : ;: ROUTINES ARE : ;: USED. : ;:-----------------: ;: ;: INITNED) ;: ADDRESS FOLLOWS ;: JSR. ;: PINT SAVR STKA INCA SSTK DECA LAIA LAIA CVHD RSTR ;: ;: ;: ;:***************** ;: ;: PUTC- PRINTS ;: ASCII CHARACTER ;: IN ACC. IF PRCC ;: PUTC : ASV2 #$80 COUT ASO. NYBBLE OF ;: ACC TO ITS ASCII ;: EQUIVALENT. ;: ;: ;: SHR4 MSHFT 30  ;: ;:***************** ;: ; TSTD : #'9'+1 TSTD1 #'0'  ; TSTD1  ; ; ; ; ; ;****************** ; ;: ;: PINT-PRT INTEGER ;: (UNSIG ; ; PINT3 DIGIT #$0 PINT5 #ZERO PINT4 LEAD0 ; PINT4 LEAD0 PINT6 PINT5 PUTC PINT6 PINT1     ; ; T10L 010A64E810 T10H 0000000327 ; ;:****************** ;: SHR4 CONVERTS THE ;: H.STR ;: ;:***************** ;: ;: ;: HEX TO DECIMAL ;: CONVERSION ; CVHD :    ; 4 LEAD0 PINT1 : #ZERO DIGIT ; PINT2 :  ADDR T10L,X  ADDR+$1 T10H,X PINT3 ; ADDR+$1  ADDR DIGIT PINT2HE JSR ;: PCIN SAVR STKA INCA SSTK DECA LAIA LAIA OTAI RSTR ;: ;:****************** ;: ;: ;:****************** ;: ;: PSPC-PRINT SPACES ;: ACC CONTAINS # OF ;: SPACES TO PRINT ;: ;: PSPC SAVR  PRBL2 RDR  ;: ;:****************** ;: ;: ;: ;: LAIA-LOAD ADDR ;: INDIRECT THRU ;: ADDR. ;: LAIA 00 (ADDR),Y   (ADDR),Y ADDR+$01  ADDR  ;: ;:****************** ;: ;: PCIN PRINT CHARS ;: INDIRECT, BYTE ;: FOLLOWING T AN ADDRESS OF A ;: CHARACTER ARRAY ;: FOLLOWS THE JSR. ;: PCIA SAVR STKA INCA SSTK DECA LAIA OTAI RSTR ;: ;:****************** ;: ;: ;: DECA DECREMENTS ;: ADDR BY 1. ;: DECA ADDR DCA1 ADDR+$01 DCA1 AD1 (ADDR),Y INA1 PUTC INCA OTA1 ;: ;: ;: ;:****************** ;: ;: INCA INCREMENTS ;: ADDR BY 1 ;: INCA ADDR INA1 ADDR+$01 INA1 ;: ;: ;:****************** ;: ;: ;: ;: PCIA IS SIMILAR ;: TO PCIM EXCEPT ;:RACTERS IMMED- ;: IATELY FOLLOWING ;: THE JSR. THE ;: CHARS ARE ENDED ;: WITH A HEX '0' ;: PCIM SAVR STKA OTAI SSTK RSTR ;: ;:****************** ;: ;: ;: OTAI OUTPUTS ;: CHARS UNTIL A ;: HEX "0" IS FOUND ;: OTAI 00 OTADDR. ;: ;: STKA PAG1+$3,X ADDR PAG1+$4,X ADDR+$01 INCA ;: ;: ;: ;: SSTK DOES THE ;: INVERSE OF STKA ;: SSTK ADDR PAG1+$3,X ADDR+$01 PAG1+$4,X  ;: ;:****************** ;: ;: ;: PCIM PRINTS THE ;: CHASAVR ASAV YSAV XSAV  ;: ;: ;: RSTR RESTORES ;: REGISTARS SAVED ;: BY SAVR. ;: RSTR ASAV YSAV XSAV  ;: ;:****************** ;: ;: STKA TRANSFERS ;: THE RETURN ADDR- ;: ESS OF THE CALL- ;: ING ROUTINE TO ;: A YSAVE #17 CNVRT1 CTBL,Y CNVRT2  CNVRT1 CNVRTX ; CNVRT2 CTBL2,Y CNVRTX YSAVE  ; CTBL "!#'()^<>/-13789N,." CTBL2 "|`{}~[]\_|`{}~[]" ; ; ;: ;: ;: ;: ;: SAVR SAVES THE ;: REGISTARS IN ;: PG1 ;: TSTXIT #$20 TSTXIT ; ; ; ; SETCRS : CH (BASL),Y CUCURS #$E0 SETC1 #$20 ; SETC1 : LCPLSINV #$7F  #$3F  ; MASK,X (BASL),Y  ; LCPLSINV MASK 0000  MASK 0040  ; ; ; CONVRT :L),Y GET0 ; ; GET6 : #ESC GET4 KEYIN CONVRT GET5 ; ; GET4 : TSTSHF ; GET5 :  CUCURS (BASL),Y  #$7F     GETCY  ; ; TSTSHF : SHIFTL TSTXIT #'A'  #'A'  #26+$80  $FC58 CRLF $FC62 DOLF $FC66 CELN $FC9C COUT $FDED KEYIN $FD18 ;: ;: RDKY : GETCY   ; GET0 : SHIFTL SETCRS GET3 : KEYIN #CNTRLS GET6 SHIFTL #$1 #$1 SHIFTL CUCURS (BASUT $9500 PAG2 $9500 PG21 $9501 ;  INPUT $9800 PAG2 $9800 PG21 $9801 ;  ; KEYBRD $C000 KYSTRB $C010 ;: ;: ;: ;: MSHFT $F87B PRBL2 $F94A BELL $FBDD DOBS $FC10 UP.. $FC1A HOME $0024 CH $24 CV.. $0025 BASL $0028 ADDR $E0 BDDR ADDR+$2 CDDR BDDR+$2 ; BCDL $80 GETCY BCDL+$5 YSAVE GETCY+$1 CUCURS YSAVE+$1 SHIFTL CUCURS+$1 ; ;: PAG1 $0100 ; ; HAS64K ; INP $A CNTRLK $B CNTRLL $C CNTRLO $F ;: ;: ; ; PAGE 1 VARS ; ASAV $0100 XSAV $0101 YSAV $0102 LEAD0 $103 DIGIT $104 ASV2 $0105 XSV2 $0106 YSV2 $0107 ;: ;: ;: ;: ;: ZPAGE VARS ;: ;: CH.. 00 ;: START : RDLN PCIM MOVR MOVL TSTD CVDH INIT PSPC PUTC PINT PCIA OTAI STKA SSTK ; ;: ; ; CONSTANTS ; CNTRLS $93 ESC $9B ZPLUS1 $DB ZERO $B0 CNTRLU $15 CNTRLX $18 CNTRLJ LLED A LAZER MICROSYSTEMS' ; LOWER CASE +PLUS, AND/OR ; KEYBOARD +PLUS. ; ; ; ; FALSE 0 TRUE 1 ; HAS64K TRUE ; ; #; LOWER CASE +PLUS IN INVERSE ONLY ; MODE? ; LCPLSINV FALSE ; ; ; HAS64K  $E880   $6880  ;  $8   "LISA P2.L" ; ; !; P2.L IS THE INPUT/OUTPUT STUFF ; FOR LISA 2.5. ; ; IT IS A SOMEWHAT CLEANED-UP "; VERSION OF THE LZR IOS ROUTINES ; FOUND ON THE LISA 1.5 DISK. ; ; MANY OF THE ROUTINES IN THIS ; SECTION ASSUME THAT YOU HAVE "; INSTA          I 0 IFCNT P300 ; IFERR3 ERRR  'UNMATCHED IF/EL/FI'  00 P300 ; P3EL PRLN DELIF IFCNT IFERR3 #0 IFCNT P300 ; P3IF : IFCNT GOODIF ERRR  'NESTED IF''S NOT ALLOWED'  00 WARMST ; GOODIF : TSTIF `ȱvȱHHŴ嵐fv 8㥶ȱřȱ嚰,深셹셸Lȱřȱ嚰L셒셑Lqhhh8`Lehhh` L[ PAUSE ENCOUNTEREDL[" $pLҥ L[_ $pLIFERR3 # hBSAVE ASM.CODE,A$6000,L$36B0,D2 eзL`H>L<Lꕱ ;+7-3,/)+ɻ'*#/|&^=# H H쥕4#Lϕ8셑ȱ셒Li Lhhh`L'`('`(`ȱv)ȱHHŴ嵐?v 8ȥ _ L&_ݠ셑ȱ셒hhh8`hhh`nӠЩɍ00K0100 00 hFOUND AT LINE # h heзL`H><LI@I@H5Hy`*$<>!%'";z莎yȹ / MLABEL TOO LONG`yLȹ `Lȹ hL-Ȣȹ h`ȹI0)2`ȹ ȹ'Lȹ ȹ"Ly8`ȹ N OPERAND FIELDL `L ` 82 JE1hh MMUST USE ",X)", "),Y", OR ")"L)ө)ߙYéȹ  `8` `,)`Lȹ)ߙX$Y+hh MONLY "X" OR "Y" ALLOWEDLLGAL SWEET-16 OPERANDLL, ȹ Rǭɾ.ȹ "hh MILLEGAL SWEET-16 REGISTERLLȩ L<ȹ,` L ;L8` `L Ҍ h (LLѐH݌H`#/("'*$!%<>hh MILLEGAL SYMBOL I-HH`PW''W****TTTcPT8*T**P*'''TTT-T׏L L( MEQU/EPZ MUST HAVE A LABELhhL LU L( MLABEL NOT ALLOWED HERE` !;hh MOPERAND NOT ALLOWEDL8` R%@)hh MILLE`;* + MILLEGAL BLANK IN OPERAND FIELDhLh u   t Ltxtr9 r  xt8`xrirsLt` `u抐8`HH`Կ䵘8تN LABELL h؍ :ʠ, :"  =Х :К : L ` ).%= MILLEGAL MNEMONIC.LL`r`s { Ɗ MILLEGAL OPERAND.L L MILLEGAL ADDRESSING MODE.LH L LL2LjLL9i( MMEMORY FULL`8e` h h^ h h **ERROR: h h h h h`,` ,` Q h8``  ` h;*^A  ULs` Ȍ ` MBAD CHARACTER IGDVALU GDVL0 NOFILL !DFSDON ;PSP4 APSP7 QPSP6 _PSP8 iPSP9 COPT PS10L PS10L1 PS10L2 PS10M PS10N PS10P PS10Q PS10R PS10S #PS10 ,PS12 2PS14 FPS15 WPS13 bPS11 hPS11 h U ɻ hL: h ɻ hL: h ɮ hL+ ɍ h h h h h`HHH$`) %`&`$`) xhhh` h h hhhhhhh` x`LLh` DOEQU PSP3LL PSP3 PSP5 PSP4L PSP5L kSYM TABLE FULLL`ȥȩ`H |hi쥵퐯8Ƶȱ)_i_ȥȥL(쥕i L`HH | ȥȩhh` ``H h LISA 2.5 h hĢ h L h ` h p`HH0;*  ` ` hhh` k `LUHH ` h `hh`0 : AG`8`쥕^:&#L( kDUPLICATE LABELL(i LŴ嵐暤梤`ꅝȱŝȱŝ`ꅝȱŝȱŝ" % L=`,0`ɠ,Ƀ,L`,`櫥` ą`` \ -} ` hĢ h h h섘 h pi9Ģ3 - `` $P L[xLz L[x_ȱ"' 8, L[x# $P LI/ $P LI $P LI  L[x  ) L[x - h p h ***** END OF ASSEMBLY ` kƚƙ`Lhh kLpx6  kLET W/O LABELL[x k 悠ȥ L[xC.L L[x kUNMATCHED IF/EL/FIL[x ؁ݩL[x kNESTED IF'S NOT ALLOWEDL` L[x $p Lz  ؁`8eH hȱx+ȱꅝȱŝ L ą L[x8ȱ * &ɻ"A) ȱA) L2 L[x, kFLOATING POINT NOT YET IMPLIMENTEDL[x  L[x L[x2مvu x h ȱꅝȱŝ hLπ h h L[xHHH h $pLz, ƻƺL eeee L[x $pLz L[x L[xȥ쥚  Lȩ 8 L[x4ȩ 8IƜƛI L[x? 8 L[x?@ 8 L[$pLz , L[x $pLz , L[x:ȱ"' 8, $pLz , L[x  ą L[x L[x kPAUSE ENCOUNTEREDL[x" $pLz L[x_ $pLz,-L}q1QQ k$pLazLz L[xh L k$pLz L[x LA}H $phLz'h8鿪} LL}m- ,MMNn.h8鿪} L[xe%$EEFf&" $pLz , L[x" * h8鿪| ȱ#/, k$pLz L[x k$pLz L[x' ȱ L[x"ȱ L[xȱ L[xA)Lg|i) IIl h k$pLz L[xh8鿪| L}a!AAh8鿪} p" kUNDEFINED SYMBOLL[x L[xy9YYh" k$pLazLz L[x8H 悥9$phLzh{ L[x}=]]^~>$phLazh{ L[xu5UUVv6h8Ԫ{ L[xJjk$pLz L[x`pHȱ 8z8zl{7}{|||I{Hzh>Lz k$pA kUNDEFINED SYMBOL-MUST BE ZPAGE.L[x k$PȥK 7 kADDRESSING MODE REQUIRES ZPAGE VARIABLE.L[x L[x8鿪0{ k$ kUNDEFINED SYMBOLL[x8噅嚅ƚƙ&( kBRANCH OUT OF RANGEL[x0 L[x0pP ɼ+8鲪zHȱ@ȱA8)h L[xɾ.ɽȱ@ HLy@HLyȱ@0HLyȩPHLyȱA8)  #0 LxLLQLLLL멀vم􅢅(򅡠 Lpx 8e륙ȱ0;*^ ȱ)_ ؐL}ɲ LyLzɖLx8閪x L[x XʈHh(`@ 8x8逪ny k$p LdvHH thőhŒ "w`Lu,L ` x h **ERROR AT LINE h: h h h h h h h C)ONTINUE OR A)BORT? h)AL``EQUIRED. ; ****** PUTTTL : PRTTTL PUTTL1  ; PUTTL1  H t8h呅h咅 `*$HH thh  `/$HH thh  `|HH thhLbv&HH th%h%ĩLbv^HH thEhELbv=,HH thőhŒhLbvhLbv#ȱ-Lu o 8呅咅Lu oLuȱꅑȱLuȱ LKu8ȱLuH "wh `hLuȱ DmA8) XmLuHh+HH thehe `-Hq 5wABS,Y IS NOT ALLOWED.LoL?q tL?qL q t (w (w,Loȱ'" t (w,Lo ktLZtȱꅝȱŝȱŝ (wLqt`$Lu< >A[L}u*Ldu!I%L4u'LHu"L\u h= 5w** DAMAGE ** ILLEGAL CHARACTER IN OPERAND`` k$pL#rLoeeLoȱ ?,ȱ# (w kL;s/ (w kL;s'" ktL;s (w (w kL;sLo )LoȱL qL qL q5 tL q 5wSTY ABS,X NOT ALLOWEDLoL?qF t2L qL?eeLo t$P Lo 5wILLEGAL FORWARD REFERENCE.Lo 5wEQU W/O LABELLo rLo lrLo 5wUNMATCHED IF/EL/FI` 5wNESTED IF'S NOT ALLOWEDL` rLo t$p 5wUNDEF SYMBOLLo r` lrL`8eȱɥ l ɖ (w (wLo ɾ# (wLoԐذȱ t (w (w (wLoLs8 aqH`qH`3tCrqroqoqqjmooqGtGtoqqooqq3toooCrrWrZrCrs(s8soosoooȱ Dm (wLq (w ktLo mLp k$PILo k$P1eeȱLq;*^ l :Lq "wLp1  kȥLo 5wDUPLICATE LABELLo Lo lLo :a^& 5wLOCAL LABELS MAY NOT BE EQUATEDLo k$P lLo 5wUNDEF. SYMBOL/ILLEGAL ADDRESSLo8) XmLn+HH nhehe `-HH n8h呅h咅 ` "w; 5wSYMBOL WAS NOT PREVIOUSLY DEFINED IN AN EPZ STATEMENT.`L oȢ hLoH hᅒh`ȩ1 0&&Lo8&&Lo`Lp8e`hh8 ` ` h h BLOAD "' h h,A$` ` ` h`>fm`@>fm`$RA[LEo!3%7 hLn 5wILLEGAL OPERAND IN ADDRESS FIELD` oL o oL oȱ DmA)m n ɻ 5wEPZ > $FF` lLl nLlLkm mLlLkmLl0 : AG`8`&&&&`#imjm l`  n h BLOAD TEMP. @ L|n lrL` n]  h BSAVE TEMP.,A$ ` ` h,L$HH ` "w`LxLx`'`(` l l ul h1 l l o ul h2 Lm l l x x` h **END OF PASS ` _`@ `󅯩Ll8e 5wNO ENDL`ȱL)m;*ʠ L&eheh`I0  jeI0`HHH hhh`HHHLkhhh`PRL2 ;: PRL1 CODSAV,Y PRHX #' ' LlLmL5wLkLk x` t2jH7j hLih ɰ, fjhh` d' { 0`:0`` Gi [i i ii i i i iLQi ``HHH h fjL~j) B 2 4 " fjƩ/ fj b L|j Lj fjLj Lj fLj bhhh`H&H&( )? i(`@#i05i`޼άݍ``Li` Gi [i i iiLQi fj iLi` Gi [i i ii i i iLQi`Hȱh` Gi [i i ii i i i iLQi Gi JLQiHH8L!`00 CCNT (PNTR),Y DELM CCR1 (PNTR),LwjLuiLgkL,kLBjL kLrjLiLfjLKjLiLiL[iLiiH h ɓ)I(Lhɛ  iLh hH(h)h` IAIA `$TEMS VERSION 2.5G -- 48K L/`B@fm a g h BLOAD a h,A$ igLg h BAD FILENAME ` LHH ;b ghhL;b@> a g h BSAVE a h,A$ ig h,L$ g h ` ;b8 4b 4b L H hh kfɻ h e 4b`8 h kf h LEfpftf kf h Lhd ة``-`Vʩ/V X h LAZER SYSTEM'S INTERACTIVE SYMBOLIC ASSEMBLER (C) 1981 LAZER SYSROLASLADREQUORGOBJEPZSTRDCMASCICLENDLSTNLSHEXBYTHBYPAUDFSDCIPAGINVBLKDBYTTLSBCLET.IF.EL.FI= PHSDPH.DAGENNOGUSRENZL#fȱ0M*;Lf00 H :hLe h : h L#fh:Le kf kfLe h)H hemcmcEBLTBMIBCCBCSBPLBNEBEQBVSBVCBSBBNMBM1BNZBIZBIMBIPBICBNCBRABTRBFLBRKBKSCLVCLCCLDCLIDEXDEYINXINYNOPPHAPLAPHPPLPRTSRTIRSBRTNSECSEISEDTAXTAYTSXTXATXSTYAADDCPRDCRINRSUBLDDPOPPPDSTDSTPLDRSTOSETADCANDORABITCMPCPXCPYDECEORINCJMPJSRLDALDXLDYSTASTXSTYXORLSRRORb a, a  b`iiL@cL@c a,ɠ,ɃL/` Rf ue zc`` a b`H b ah` "bh a, a b` b zc a b ;b b h`ei ;b b h`H bhH ch `b`cBGhh```````HH +beihh` ;b a b` b a b b h b a zc "b hL;b h h8` hBAD # ` a > b` LEAR? h a)YLxf` aH !` h OPEN a h h WRITEh,  h h INS +b ue zcLVa h CLOSE ` !` a h  `a)_ hLa   a ` +b#e 4bLa`HH O`4LxfL/`L,`L=`LLueL;bLRfLaXc>LQ _` b hpt^! h h a>fm̍م3vua)_ݠ`4)_ݱ`* h WHAT? L=`BLLSAIDLANMWF ROEAP`` `L=`les` wg`ggbcbk`ca``aaa,L g C$i+                          L BL ٍӍ q LkɮLlɬLlLlɍLl Wsns L}lil Šms mLl TmLl nLl oLl EoLl ~qLl qLl [nLll ō`   ōL*L    L .L    L   L    s    . L #  L /  -   '    .   L L  L%      . L L  `  L. ` Ҡà͠ɠź o Ġ ɍʅ˅L M `  L . `3 Q = ٩3 ΠíčŠíčӍ  / ٠ L ҠL Ԡ L  . I ՠL ڠL  $I0 ; L  AAG=) Ll 0:, `, ` ) ee L `H HH hehe h` && ` . -    L H h`  ``hh  L+ l O-T7HAAKDL QL& Ġ L Ǡ L ʠ L ؠ L à  . -   L     L  L  . #  SEUDO OPCODE ; DOPSEUD : PSEUDOP CONVERT ;   TNT BLKDEL OPRND3 #";" COUT #" " COUT OPRND2 ; OPRND4 : INCP OPRND2 ; ALLDONE : OPRND3 #$8D COUT INCP CONVERT ; ; ; ; ; HANDLE COMMENTS ; COMMENT #";" COUT INCP OPRND2 ; ; ; DOPSEUD- HANDLE PUT INCP (PNTR),Y OPRND1 ; OPRND0 #'/' OPRND1 COUT INCP (PNTR),Y ; OPRND1 #'-' OPRND2 #"!" COUT #"-" COUT INCP ; OPRND2 (PNTR),Y OPRND3 COUT ; #' ' OPRND4 DIDCMNT OPRND4 #1 DIDCMM0 INCP ; MNEM0 INCP (PNTR),YTEST FOR ACC MODE ALLDONE #' ' MNEM3 #";" COUT #" " COUT #1 DIDCMNT BLKDEL MNEM4 ; MNEM3 #0 DIDCMNT ; MNEM4 : ; ; HANDLE OPERAND FIELD HERE ; #'#' OPRND0 COCOUT (PNTR),Y #'.'CHECK FOR PSEUDO OP CNVRT5 DOPSEUD ; ; CNVRT5 : COUT INCP (PNTR),Y COUT INCP (PNTR),Y *+5 ALLDONE ; ; COUT #' ' MNEM0 INCP (PNTR),Y *+5 ALLDONE ; ; COUT #' ' MNE00 #0 PUTC PRINT  8D84 "CLOSE"  8D00 $E000 ; ; CNVRT0 : (PNTR),Y #'*'COMMENT? CNVRT3 COMMENT ; ; CNVRT3 : GETLBLHANDLE LABEL #0 CNVRT2 #":" COUT #$8D COUT INCP CONVERT ; CNVRT2 #" " ">" PROMPT PRINT  8D84  "OPEN SC-CONVERTED"  8D84  "WRITE SC-CONVERTED"  8D  "INS"  8D00 ; ; CONVERT : #0 INCP3 ; ; ; SEE IF WE ARE DONE YET ; PNTR ENDPGM PNTR+1 ENDPGM+1 CNVRT0 ; ; QUIT ; PRINT 858D LABEL (IF THERE) ; AND PRINTS IT. ; GETLBL : #0 LBLOOP (PNTR),Y LBLXIT #' ' LBLXIT COUT INCP LBLOOP ; LBLXIT BLKDEL  ; ; ; ; ; ; ; ; ; START : ; ; #":" PROMPT DISKINIT LOAD #$80 $D9 #PAG3 ; PRINT  8D84 "LOAD "  00 ; #0 LOAD1 PAG3,X COUT #$8D LOAD2  LOAD1 ; LOAD2 $CABASIC POINTER PNTR $CB PNTR+1 $4CBASIC END OF PROGRAM ENDPGM $4D ENDPGM+1 ;  ; ; ; ; ; GETLBL- GETSANKS ; BLKDEL : #0 (PNTR),Y #' ' BLKXIT INCP BLKDEL ; BLKXIT ; ; ; LOAD- LOADS AN SCASMII FILE ; LOAD : PRINT  8D  "ENTER SC ASM II FILENAME:"  00 ; GETLN LOAD0 INPUT,X PAG3,X  LOAD0 INPUT ЇPSEUD1 COUT #' ' PSEUD2 ; ; COMMENT HERE ; DIDCMNT PSEUD2 #";" COUT #" " COUT #1 DIDCMNT BLKDEL PSEUD0 ; PSEUD2 : INCP PSEUD0 ; PSEUD1 #$8D COUT INCP  ; ; ; !; BLKDEL- DELETES LEADING BL ; ASL4 ASL2 ASL2 ASL1 ASL1 ADDRESS ADDRESS+1  ; ; ; !; PSEUDXIT- PRINTS OPERAND FIELD ; PSEUDXIT: BLKDEL #'-' PSEUD5 #"!" COUT #"-" COUT INCP ; PSEUD5 : #0 DIDCMNT ; PSEUD0 (PNTR),Y ADDRESS+1 INCZ GETDEC ; ; ADRXIT :  ; ; ; ; ; ; ; "; MUL10- MULTIPLIES ADDRESS BY 10 ; MUL10 :  #0 ASL1 ADDRESS+1  ADDRESS  ASL2   ADDRESS ADDRESS  ADDRESS+1 ADDRESS+1   ; ; ; ; ASL4 GETHEX ; TSTDEC #'0' NOTDEC #'9'+1 NOTDEC ZERO  ; NOTDEC ALLONES  ; ALLONES $FF ZERO $0 ; ; ; GETDEC : (ZPAG),Y TSTDEC ADRXIT #$F MUL10  ADDRESS ADDRESS #0 ADDRESS+1 TR+1 ZPAG+1 ; ADRLOOP (ZPAG),Y #'$' GETHEX #$30 #10 GETDEC #$FF ADDRESS ADDRESS+1 ADRXIT ; GETHEX : INCZ (ZPAG),Y TSTDEC GOODHEX #'A' ADRXIT #'F'+1 ADRXIT #6 ; GOODHEX : #$F    ZPADR PRINT "EQU "  00 PSEUDXIT ; ZPADR PRINT "EPZ "  00 PSEUDXIT ; ; ; ; GETADR- CHECKS TO SEE IF DATA ; IN THE ADDRESS FIELD IS A ; ZERO PAGE VALUE OR NOT ; GETADR : ; #0 ADDRESS ADDRESS+1 PNTR ZPAG PN#'#' BYT #'/' ADR ; ; HBY HERE ; PRINT "HBY " ;  00 INCP PSEUDXIT ; ADR PRINT "ADR "  00 PSEUDXIT ; BYT PRINT "BYT "  00 INCP PSEUDXIT ; EQU : INCP BLKDEL GETADR ADDRESS+1 TE COUT ; ASC2 #0 (PNTR),Y DELIMIT ; ASC3 INCP (PNTR),Y DELIMIT ASC4 QUOTE ASC5 COUT ASC5 COUT ASC3 ; ASC4 QUOTE COUT INCP PSEUDXIT ; ; ; ; ".DA" HERE ; DATA : INCP2 BLKDEL  INCP2 PSEUDXIT ; ; ; ".HS" HERE ; HEX PRINT "HEX "  00 INCP2 PSEUDXIT ; ; ; ".AS" HERE ; ASC PRINT "ASC "  00 INCP2 BLKDEL #'-' ASC1 #""" QUOTE COUT INCP ASC2 ; ASC1 #"'" QUOINCP (PNTR),Y #'Q' NOTEQU EQU ; NOTEQU : ; ; ".EN" HERE ; PRINT "END "  00 INCP PSEUDXIT ; ; ; ".OR" HERE ; ORG PRINT "ORG "  00 INCP2 PSEUDXIT ; ; ; ".TA" HERE ; OBJ PRINT "OBJ "  00CHECKS ALL SC PSEUDO ; OPS AND CONVERTS THEM ; PSEUDOP : ; INCPMOVE TO NEXT CHARACTER #0 (PNTR),Y #'O' ORG #'T' OBJ #'H' HEX #'A' ASC #'D' NOTDATA DATA ; NOTDATA : ; ; ; ; ; MUST ".EN" OR ".EQ" HERE ; ; "; PRINT- OUTPUTS STRING FOLLOWING ; THE JSR PRINT ; PRINT : ASAVE YSAVE ;  ZPAG  ZPAG+1 ; #0 PRTLOOP INCZ (ZPAG),Y PRTXIT COUT PRTLOOP ; PRTXIT INCZ ASAVE YSAVE (ZPAG) ; ; ; ; ; ; PSEUDOP- OINTER ; INCP2-INCREMENTS POINTER BY 2 ; INCP3-INCREMENTS POINTER BY 3 ; INCP3 INCP INCP2 INCP INCP PNTR INCP0 PNTR+1 ; INCP0 ; ; ; ; INCZ- INCREMENTS ZPAG BY 1 ; INCZ ZPAG INCZ0 ZPAG+1 ; INCZ0 ; ; $FDED DISKINIT $A851 ; ; ; ; ; ; SCTOLISA: SEMI-AUTOMATIC ; CONVERSION FROM SC ASM II ; TO LISA 1.5 OR 2.0. ;  $800 ; ; START ; ; ; ; COUT- OUTPUT A CHARACTER ; COUT #$80 PUTC   ; ; ; ; ; INCP- INCREMENTS P: PNTR $0 ZPAG PNTR+2 ASAVE ZPAG+2 YSAVE ASAVE+1 QUOTE YSAVE+1 DELIMIT QUOTE+1 ADDRESS DELIMIT+1 ENDPGM ADDRESS+2 DIDCMNT ENDPGM+2 ; ; PROMPT $33 INPUT $200 PAG3 $300 GETLN $FD6F PUTC                   ; NXTCHR ; ; GETNUM #0 A2 A2+1 ; NXTCHR INPUT,Y  #$B0 #$A DIG #$88 #$FA DIG  ; ;  ; INPUT $100 ;  $100+*&$FF00 ; ; ; ARRAY $2000 ENDARY *   0,X INPUT,X  GETLN0 ; #0 GETLN1 INPUT,X #CR GETLN2  GETLN1 GETLN3 ; GETLN2 #CR INPUT,X  GETLN2 ; GETLN3 :     ; ; ; ; DIG #3     ; NXTBIT A2 A2+1  NXTBIT UEPZ0 ; EQUXIT      ; ; ; ; PRTEPZ :    ; #0 PRTEPZ0 EPZ,X PRTEPZ1 COUT  PRTEPZ0 ; EPZ " EPZ "  00 ; PRTEPZ1    ; ; GETLN :    ; GTLINE #0 ; GETLN0 $20QUEPZ7 : SEARCH STOPPOSN SEARCH+1 STOPPOSN+1 *+5 EQUEPZ0 ; SEARCH #ENDARY SEARCH+1 /ENDARY EQUXIT ; SEARCH ENDSRCH SEARCH+1 ENDSRCH+1 *+5 EQUEPZ0 ; ; ENDSRCH SEARCH ENDSRCH+1 SEARCH+1 EQTMPSRCH PRBYTE PRTEPZ EQUEPZ6 ; EQUEPZ5 TMPSRCH+1 PRBYTE TMPSRCH PRBYTE PRTEQU ; ; EQUEPZ6 : #"$" COUT TMPSRCH+1 PRBYTE TMPSRCH PRBYTE   EQUEPZ2 ; ; EQUEPZ1 : SEARCH EQUEPZ7 SEARCH+1 ; ET,X (SEARCH),Y  SEARCH #ARRAY TMPSRCH SEARCH+1 /ARRAY TMPSRCH+1        TMPSRCH TMPSRCH+1  TMPSRCH TMPSRCH+1  TMPSRCH TMPSRCH+1 ; #CR COUT #"L" COUT TMPSRCH+1 EQUEPZ5 RAY+1 ENDSRCH ENDSRCH+1 /ARRAY+1 ENDSRCH+1 ; ; ; ; ; #ARRAY SEARCH /ARRAY SEARCH+1 #0 EQUEPZ0 : (SEARCH),Y *+5 EQUEPZ1 ; #7 EQUEPZ2 EQUEPZ3  EQUEPZ2 EQUEPZ1 ; EQUEPZ3 (SEARCH),Y BITSETOPPOSN STOPPOSN+1 STOPPOSN  STOPPOSN #ARRAY STOPPOSN STOPPOSN+1 /ARRAY STOPPOSN+1 ; ENDRANGE ENDSRCH ENDRANGE+1 ENDSRCH+1 ENDSRCH+1 ENDSRCH ENDSRCH+1 ENDSRCH ENDSRCH+1 ENDSRCH  ENDSRCH #AR; MSG8.0 : PC+1 PRBYTE PC PRBYTE #CR COUT #";" COUT ;       ; ; ; ; ; ; ; EQU_EPZ :      ; BGNRANGE STOPPOSN BGNRANGE+1 STOPPOSN+1 STOPPOSN+1 STOPPOSN STOPPOSN+1 SVAL #1 PC STOPVAL+1 #0 PC+1 ; ;       ; ; GETORG :      ; STOPVAL PC STOPVAL+1 PC+1 ; #0 MSG8 ORG,X MSG8.0 COUT  MSG8 ; ORG 8D  ";"  8D " ORG $"  00 .0    ; ; ; ; ; GETIGNOR:      ;  STOPVAL PC  STOPVAL+1 PC+1  GETIGN0  #1 ; GETIGN0     PRTDFS  PRBYTE  PRBYTE ; #CR COUT #";" COUT ;  STOPDR ;  PC #2 PC GETPUSH1 PC+1 ; GETPUSH1STOPVAL PC STOPVAL+1 PC+1 GETPUSH0 ;     ; ; ; PRTDFS :    #0 MSG7 DFS,X MSG7.0 COUT  MSG7 ; DFS 8D " DFS $"  00 ; MSG7PC+1 ; GETADRS1STOPVAL PC STOPVAL+1 PC+1 GETADRS0 ;     ; ; ; ; ; ; GETPUSH :    ; GETPUSH0: #1 (PC),Y SYMADRS+1  (PC),Y SYMADRS SYMADRS GETPUSH2 SYMADRS+1 ; GETPUSH2: STOREAGETHEX : ; PC GETHEX1 PC+1 ; GETHEX1 STOPVAL PC STOPVAL+1 PC+1 GETHEX ;  ; ; ; GETADRS :    ; ; GETADRS0: #0 (PC),Y SYMADRS  (PC),Y SYMADRS+1 STOREADR ;  PC #2 PC GETADRS1      ; ; ; ; ; ; LIST : ;    ; LIST0 : PC PCAUX PC+1 PCAUX+1 INSDS1 SETFMT INSTDSP PCADJ PC PC+1 ; #CR COUT STOPVAL PC STOPVAL+1 PC+1 LIST0 ;     ;   ; CHKTBL TBLCLC ; ; ; CLEAR BIT IN TABLE ; (SYMADRS),Y BITSET,X (SYMADRS),Y ; ; PRINT THE LABEL ; #CR COUT #"L" COUT PC+1 PRBYTE PC PRBYTE #":" COUT        ; TBLCLC ADRS PC+1 SYMADRS+1 #3 TSTLBL0 SYMADRS+1 SYMADRS   TSTLBL0 ;       #0  SYMADRS #ARRAY SYMADRS SYMADRS+1 /ARRAY SYMADRS+1 ; BITSET,X (SYMADRS),Y ;  ; ; ; TSTLBL :   #"$" COUT  TEMP PCAUX PRBYTE LBLTST ; LBLTST1 STOPVAL PC STOPVAL+1 PC+1 *+5 PRTINST0 ;     ; ; ; ; ; ; ; ; CHECK CURRENT ADDRESS TO #; SEE IF A LABEL IS REQUIRED HERE. ; ; CHKTBL : PC SYMBLTST0 PCAUX PC PCAUX+1 PC+1 LBLTST1 ; PC TEMP  PC+1  PCAUX PC PCAUX+1 PC+1 ; CHKTBL LBLTST #CR COUT #"L" COUT PCAUX+1 PRBYTE PCAUX PRBYTE PRTEQU #"*" COUT #"-" COUT    ; PRTINST0PC PCAUX  PC+1 PCAUX+1  ; TSTLBL #CR COUT INSDS1 INSTDSP PCADJ PC PC+1 ;  PCAUX+1  PCAUX PC  PC+1  ; LBLTST PC+1  PC PCAUX LBLTST0 PCAUX+1 ; L+1 PC+1 PRTPSH0 ; ;     ; ; ; ; ; ; ; HANDLE THE "EQU" STATEMENT ; PRTEQU   #0 ; PRTEQU0 EQU,X PRTEQU1 COUT  PRTEQU0 ; EQU " EQU "  00 ; PRTEQU1    ; ; ; ; PRTINST : CHKTBL DOPHSBYT PRTADR #"-" COUT #"1" COUT NXTPSH ; DOPHSBYTPRTBYT #"-" COUT #"1" COUT TSTLBL PRTHBY #"-" COUT #"1" COUT ; NXTPSH PC PRTPSH2 PC+1 ; PRTPSH2 : ; STOPVAL PC STOPVAL; ; ; ; ; HANDLE "ADR LBL-1" TYPE ; REFERENCES. ; ; PRTPUSH :    ; PRTPSH0 : #0  (PC),Y #1 PCPLUS1  (PC),Y #0 PCPLUS1+1 ; PC PCAUX PC+1 PCAUX+1 ; TSTLBL PC PRTPSH1 PC+1 ; PRTPSH1 PC PRTADRS1 PC+1 ; PRTADRS1CHKTBL DOBYTS ; PRTADR NXTADRS ; DOBYTS PRTBYT ; TSTLBL PRTHBY ; NXTADRS PC PRTADRS3 PC+1 ; PRTADRS3STOPVAL PC STOPVAL+1 PC+1 PRTADRS0 ;       ; ; NTADR  ; ; ; PRINTADR: #"L" COUT PCPLUS1+1 PRBYTE PCPLUS1 PRBYTE  ; ; ; PRTADRS : ;      ; PRTADRS0: PC PCAUX PC+1 PCAUX+1 #0 (PC),Y PCPLUS1  (PC),Y PCPLUS1+1 ; ; TSTLBL  ; ; PRTBYT #0 PRTBYT0 BYT,X PRTBYT1 COUT  PRTBYT0 ; BYT 8D " BYT "  00 ; PRTBYT1 PRINTADR  ; ; PRTHBY #0 PRTHBY1 HBY,X PRTHBY2 COUT  PRTHBY1 ; HBY 8D " HBY "  00 ; PRTHBY2 PRIOPVAL PC STOPVAL+1 PC+1 GETVAR1 ; ;       ; ; ; ; ; ; ; ; ; HANDLE ADR PSEUDO OPCODE ; ; PRTADR #0 PRTADR0 ADR,X PRTADR1 COUT  PRTADR0 ; ADR 8D " ADR "  00 ; PRTADR1 PRINTADR ETVAR1 : BYTCNT GETVAR2 BYTCNT+1 ; GETVAR2 : PC GETVAR3 PC+1 ; GETVAR3 : CHKTBL GETVAR4 ; PRTDFS BYTCNT+1 GETVAR5 PRBYTE ; GETVAR5 BYTCNT PRBYTE TSTLBL #0 BYTCNT BYTCNT+1 ; ; ; GETVAR4 : STBL PRTA4 NOTAPL TSTLBL  ; ; ; NOTAPL #""" COUT  ; FIXASC1 #""" COUT DOHEX4 ; ; ; ; ; ; ; ; GETVAR- HANDLE USER VARIABLE ; AREAS. ; GETVAR :      ; ; TSTLBL #0 BYTCNT BYTCNT+1 ; GPLASC: ; PRTASC #""" COUT ; #0 #0 PRTA4 #$20 NOTAPL (PC),Y NOTAPL #" " NOTAPL COUT #""" PRTA7 COUT ; PRTA7 : PC PRTA5 PC+1 ; PRTA5 STOPVAL PC STOPVAL+1 PC+1 FIXASC1 CHKT2 ; DOHEX1 PRBYTE #$20 DOHEX PC DOHEX3 PC+1 ; DOHEX3 STOPVAL PC STOPVAL+1 PC+1 DOHEX4 TSTLBL DOHEX DOHEX0 ; DOHEX2 ; DOHEX4 POP RTN ADDRESS  ; ; ASCDONE :       ; ; ; DOAXASC0 CHKTBL PRTA2 NOTASC TSTLBL  ; ; NOTASC #"'" COUT  ; FIXASC0 #"'" COUT DOHEX4 ; ; ; HANDLE UNPRINTABLE CHARS ; DOHEX PRTHX #0 #0 DOHEX0 (PC),Y #' ' DOHEX1 #$80 DOHEX2 #" " DOHEX ; NORMASC : PRTASC #"'" COUT ; #0 #0 PRTA2 #$20 NOTASC (PC),Y NOTASC #' ' NOTASC #$80 COUT #"'" PRTA6 COUT ; PRTA6 : PC PRTA3 PC+1 ; PRTA3 STOPVAL PC STOPVAL+1 PC+1 FINTS ASCII STRINGS ; PRTASCII:      ; TSTLBL ; PRTA0 : #0 (PC),Y PRTA1 #" " DOAPL DOHEX PRTA0 ; DOAPL : DOAPLASC PRTA0 ; PRTA1 #' ' DOASC DOHEX PRTA0 ; DOASC : NORMASC PRTA0 ;XXIT TSTLBL PRTHX2 PRTHX0 ; PRTHXXIT:       ; ; ; ; PRTASC- PRINTS "ASC" ; PRTASC : #0 PRTASC0 ASC,X ASCXIT COUT  PRTASC0 ; ASC 8D " ASC "  00 ; ASCXIT ; ; ; ; ; !; PRTASCII- PRI; ; ; ; ; PRTHEX- PRINTS HEX STRINGS ; PRTHEX :      ; TSTLBL ; PRTHX2 : PRTHX #0 #0 ; PRTHX0 #$11 PRTHX2 (PC),Y PRBYTE PC PRTHX1 PC+1 ; PRTHX1 STOPVAL PC STOPVAL+1 PC+1 PRTH$ ; DISASM.2 ; ; SEVERAL UTILITY ROUTINES TO ; SUPPORT PASSES ONE AND TWO. ; ; ; ; ; ; PRTHEX- PRINTS "HEX" ; PRTHX : #CR COUT ; #0 PRTHXLP HEX,X PRTHXIT COUT  PRTHXLP ; HEX " HEX "  00 ; PRTHXIT ;                       #"V" PASS2.11 GETVAR  PAS2.0 ; ; PASS2.11: ; ; ; ; ; ; PAS2DONE: #0 CLSD CLOSE,X CLSD0 COUT  CLSD ; CLOSE 8D84 "CLOSE"  8D00 ; CLSD0 :  ; ; ; ; ; ; "DISASM.2" ;  PAS2.0 ; PAS2.5 #"L" PAS2.6 PRTINST  PAS2.0 ; PAS2.6 #"P" PAS2.8 PRTPUSH  PAS2.0 ; PAS2.8 : #"I" PASS2.9 GETIGNOR  PAS2.0 ; PASS2.9 : #"O" PASS2.10 GETORG  PAS2.0 ; ; PASS2.10: WRITE,X MSG9.0 COUT  MSG9 ; WRITE 8D84  "WRITE DISASSEMBLY"  00 ; MSG9.0 : INPUT-1,Y #"H" PAS2.3 PRTHEX  PAS2.0 ; PAS2.3 #"S" PAS2.4 PRTASCII  PAS2.0 ; PAS2.4 #"W" PAS2.5 PRTADRS PAS2DONE ; GETNUM A2 STOPVAL A2+1 STOPVAL+1 ; ; ; TEST FOR IGNOR MODE ; INPUT,Y #"I" NOIGNOR ; ; TURN OFF WRITE DISK MODE ; #CR COUT #CTRLD COUT MSG9.0 ; ; TURN ON WRITE DISK MODE ; NOIGNOR : #0 MSG9INT OUT THE REQUIRED EQUATES ; EQU_EPZ ; ; "; HANDLE THE DISASSEMBLY COMMANDS ; PAS2.0 BLKDEL #"." PASS2.1  PAS2.0 ; PASS2.1 #"," PASS2.02  PAS2.0 ; PASS2.02#"I" PASS2.2  PAS2.0 ; ; PASS2.2 #CR *+5 : ; ; ; OPEN THE FILE "DISASSEMBLY" ; #0 MSG4LOOPMSG4,X MSG4XIT COUT  MSG4LOOP ; MSG4 8D84  "MON O,I,C"  8D84  "OPEN DISASSEMBLY"  8D84  "WRITE DISASSEMBLY"  8D  "INS"  8D  ";"  00 ; ; MSG4XIT : ; !; PR PASS1 ; PASS1.9 : #"O" PASS1.10 GETORG  PASS1 ; PASS1.10: #"V" PASS1.11 GETHEX  PASS1 ; ; PASS1.11: ; ; ; ; PAS1DONE:  ; ; ; ; PASS2- ACTUALLY WRITES THE "; DISASSEMBLED CODES OUT TO DISK. ; ; PASS2 PASS1.3 #"W" PASS1.5 GETADRS  PASS1 ; PASS1.5 #"L" PASS1.6 LIST  PASS1 ; PASS1.6 #"S" PASS1.7 GETHEX  PASS1 ; PASS1.7 #"P" PASS1.8 GETPUSH  PASS1 ; PASS1.8 : #"I" PASS1.9 GETIGNOR : ; #CR PAS1DONE ; ; !; ITS NOT A DELIMITER, THEREFORE ; IT MUST BE AN ADDRESS. ; GETNUM A2 STOPVAL A2+1 STOPVAL+1 ; ; SEE WHAT TYPE OF DISASSEMBLY ; COMMAND IT IS. ; INPUT-1,Y #"H" PASS1.3 GETHEX  PASS1 ; S1 ENTERS ALL ADDRESS ; REFERENCES INTO THE DISASM/65 ; SYMBOL TABLE. ; ; ; PASS1 : ; ; DELETE LEADING SPACES AND ; REMOVE ANY DELIMITERS. ; BLKDEL #"." PASS1.1  PASS1 ; PASS1.1 : ; #"," PASS1.2  PASS1 ; PASS1.2 E MONITOR OR BASIC WORKS ; OUT OK. ; #0 FILLCR #CR $200,X  FILLCR ; ; APLMONTR ; ; ; ; ; #; BLKDEL- "DELETES" LEADING SPACES ; FROM THE INPUT BUFFER. ; BLKDEL BLKDLOOP INPUT,Y #" " BLKDLOOP  ; ; ; ; PAS80 $D9 $75 ; ; ; LET PASS TWO BEGIN. ; DURING THIS PASS, THE DIS- ; ASSEMBLED CODE IS WRITTEN TO ; THE DISK. ; STARTLOC PC STARTLOC+1 PC+1 #0 PASS2 ; ; !; KLUDGY WAY TO FIX UP THE INPUT ; BUFFER SO THAT THE RETURN TO ; THTHE DISASSEMBLY BEGIN. ; ; ; ; FIRST, GO THRU THE CODE TO BE ; DISASSEMBLED AND GET ALL THE ; ADDRESS REFERENCES. ; DONE : STARTLOC PC STARTLOC+1 PC+1 #0 PASS1 ; ; !; TURN THE DISK OPERATING SYSTEM ; ON. ; DISKINIT #$ TEMP+1 ; ; INPUT-1,Y #"H" PARSE #"N" PARSE #"W" PARSE #"L" PARSE #"S" PARSE #"P" PARSE #"I" PARSE #"O" PARSE #"V" PARSE #CR DONE BADCMD ; ; "; OK, THE COMMAND IS A VALID ONE. ; LET  PARSE ; PARS1 #"," PARS2  PARSE ; PARS2 : #"I" PARS2.0  PARSE ; PARS2.0 : #CR DONE GETNUM A2 TEMP A2+1 TEMP+1 BADCMD ENDRANGE A2 ENDRANGE+1 A2+1 BADCMD ; A2 TEMP A2+13XIT : GETLN STARTLOC TEMP STARTLOC+1 TEMP+1 #0 ; ; ; CHECK THE INPUT LINE TO ; MAKE SURE THE ADDRESSES ARE ; IN THE CORRECT ORDER AND ; THAT THE DISASSEMBLY COMMAND ; IS SYNTACTICALLY CORRECT. ; PARSE BLKDEL #"." PARS1  TEMP #BELL COUT #0 ; PRTBAD INPUT,Y COUT  TEMP PRTBAD PRTBAD ; ; ; ; !; NORMAL GET-COMMAND ENTRY POINT ; GETCMD : #0 MSG3LOOPMSG3,X MSG3XIT COUT  MSG3LOOP ; MSG3 8D  "CMD"  00 ; MSGY RANGE. ; A2 STARTLOC BGNRANGE A2+1 STARTLOC+1 BGNRANGE+1 BADSTART ; ENDRANGE STARTLOC ENDRANGE+1 STARTLOC+1 BADSTART GETCMD ; ; ; ; ; ; READ THE DISASSEMBLY COMMAND ; FROM THE KEYBOARD. ; ; BADCMD : RT: #0 MSG2LOOPMSG2,X MSG2XIT COUT  MSG2LOOP ; MSG2 8D  "ENTER STARTING ADDRESS"  00 ; ; MSG2XIT : ; GETLN #$0 BLKDEL GETNUM ; ; !; CHECK STARTING ADDRESS TO MAKE ; SURE THAT IT FALLS WITHIN THE ; DISASSEMBLA2 BGNRANGE A2+1 BGNRANGE+1 ;  INPUT,Y #"." BADRANGE ;  GETNUM A2 ENDRANGE BGNRANGE A2+1 ENDRANGE+1 BGNRANGE+1 BADRANGE GETSTART ; ; ; GET STARTING ADDRESS ; ; BADSTART#BELL COUT ; GETSTAGE#BELL COUT ; ; GETRANGE: #":" PROMPT #$0 MSG1LOOPMSG1,X MSG1XIT COUT  MSG1LOOP ; MSG1 8D  "ENTER RANGE OF DISASSEMBLY"  00 ; ; ; INPUT DISASSEMBLY RANGE ; MSG1XIT : ; GETLN #0 BLKDEL ; GETNUM HICH READS IN ; THE DISASSEMBLY RANGE. ; PLEASE FORGIVE ME FOR THE ; SIMPLY (AND BULKY) I/O BEING #; PERFORMED HERE, I WANTED TO MAKE ; THE DISASSEMBLY OF DISASM/65 ; AS EASY AS POSSIBLE FOR THOSE ; PERSONS NOT PURCHASING THE ; SOURCE. ; ; BADRAN; START OF DISASM/65 ; ; ; START : #ARRAY TEMP /ARRAY TEMP+1 #0 ; ; ; CLEAR THE SYMBOL TABLE ; CLRLOOP #0 (TEMP),Y  CLRLOOP TEMP+1 TEMP+1 /ENDARY CLRLOOP CLRLOOP GETRANGE ; ; ; !; SECTION OF CODE W STLOOP ;        #ARRAY SYMADRS SYMADRS /ARRAY SYMADRS+1 SYMADRS+1 BITSET,Y #0 (SYMADRS),Y (SYMADRS),Y ; STFMTXIT:     ; ; ; BITSET 0102040810204080 ; ; ; ; ; ; ; ; ; ; SYMBOL TABLE IS ARRANGED AS ; AN ARRAY OF 65536 BITS ; (8K BYTES). IF A BIT IS SET #; THEN THAT ADDRESS WAS REFERENCED "; IN THE CODE BEING DISASSEMBLED. ; ; STOREADR   ; ; STADDRS : #0 #3 ; STLOOP : SYMADRS+1 SYMADRS  SYMADRS FIXREL0 SYMADRS+1 ; FIXREL0 SYMADRS STADDRS SYMADRS+1 STADDRS ; ; ABSLADR #1 (PCAUX),Y SYMADRS  (PCAUX),Y SYMADRS+1 STADDRS ; ; ; ; ; ; ; ; DISASM/65 SYMBOL TABLE ; MAINTENENCE ROUTINES ; ; ; NG HERE ; #1  (PCAUX),Y RELNEG ; PCAUX SYMADRS PCAUX+1 #0 SYMADRS+1 FIXREL ; ZPAGEADR#1 (PCAUX),Y SYMADRS #0 SYMADRS+1 STADDRS ; RELNEG PCAUX SYMADRS #$FF PCAUX+1 SYMADRS+1 ; FIXREL : R 8286924A NUMABS *-ABSADR+1 ; ; ; SETFMT :    ; FORMAT #NUMZPG ; ZPLOOP ZPGADR,Y ZPAGEADR  ZPLOOP ; #NUMABS ABSLOOP ABSADR,Y ABSLADR  ABSLOOP ; #$9DRELATIVE STFMTXIT ; ; RELATIVE ADDRESSI      ; ; ; PCADJ PCADJ2 LENGTH PCADJ3 PC+1  PCADJ4  ; PCADJ4 PC RTS2  RTS2 ; ; CHAR1 ",),#(L" CHAR2 "Y"  $0  "X$L"  $0 ; ; ZPGADR 8185914D59 NUMZPG *-ZPGADR+1 ; ABSAD PRNTAX PRBYTE PRNTX PRBYTE ; PRBLNK #3 PRBL2 #" " PRBL3 COUT  PRBL2  ; ; ; HEXOPCD :      ; #0 PRTHX3 HEX+1,X PRTHX4 COUT  PRTHX3 ; PRTHX4 : #0 (PC),Y PRBYTE ; R5 ; PRADR2 FORMAT PRADR3 CHAR1-1,X COUT CHAR2-1,X PRADR3 COUT ; PRADR3 PRADR1  ; ; PRADR4 PRADR2 PRBYTE ; PRADR5 FORMAT #$E8 (PC),Y PRADR4 ; RELADR PCADJ3   PRNTYX  ; PRNTYX #3  MNEML,Y LMNEM MNEMR,Y RMNEM ; PRMN1 #0 #5 ; PRMN2 RMNEM LMNEM   PRMN2 #0 PRMN3 HEXOPCD ; PRMN3 :  #"?" COUT  PRMN1 ; PRMN4 : PRBLNK LENGTH #6 ; PRADR1 #3 PRAD#$8F   #3 #$8A MNNDX3 ; MNNDX1 MNNDX3  ; MNNDX2 #$20  MNNDX2  ; MNNDX3 MNNDX1  ; ; ; SCRN2 RTMSKZ     RTMSKZ #$F  ; ; ; ; ; INSTDSP : ; #" " COUT INSDS1 PPLE MONITOR DISASSEMBLY ; ROUTINES. ; INSDS1 #0 (PC,X) ; INSDS2  IEVEN  ERR #$A2 ERR #$87 ; IEVEN  FMT1,X SCRN2 GETFMT ; ERR #$80 #$0 ; GETFMT FMT2,X FORMAT #3 LENGTH  E $FD6A FMT1 $F962 FMT2 $F9A6 MNEML $F9C0 MNEMR $FA00 APLMONTR $FF59 ; ; ; ; #; DOS 3.2 (3.3) INITIALIZE ROUTINE ; (ALSO $3EA) ; DISKINIT $A851 ; ; ; ; ; ; THE FOLLOWING ROUTINES ARE ; MODIFIED VERSIONS OF THE ; ASEARCH+2 ENDSRCH TMPSRCH+2 A2 ENDSRCH+2 BYTCNT A2+2 PCPLUS1 BYTCNT+2 ; ; ; ; ; MONITOR ZERO PAGE EQUATES ; PROMPT $33 ; ; ; ; ; ; ; MONITOR CALLS AND EQUATES ; ; PRYX2 $FD96 PRBYTE $FDDA COUT $FDED GTLIN1 LMNEM LENGTH+1 RMNEM LMNEM+1 SYMADRS RMNEM+1 TEMP SYMADRS+2 PCAUX TEMP+2 BGNRANGE PCAUX+2 ENDRANGE BGNRANGE+2 STOPVAL ENDRANGE+2 MODE STOPVAL+2 STARTLOC MODE+2 STOPPOSN STARTLOC+2 SEARCH STOPPOSN+2 TMPSRCH %  $6800  $800 " "LISA DISASSEMBLER VERSION 1.0" START ; ; ; ; CONSTANTS USED BY DISASM/65 ; BELL $87 CR $8D CTRLD $84 ; ; ; ; "; ZERO PAGE EQUATES FOR DISASM/65 ; PC $80 FORMAT PC+2 LENGTH FORMAT+          R3 !R1TEST TO SEE IF AT BEGINNING UP1 ; ; R3MOVE PAST RETURN ; ; NOW LOOK FOR THE NEXT RETURN ; WHICH OCCURS EARLIER IN THE ; FILE ; UP2 :  @R3 R4 UP3 R3 R1 UP1 UP2 UP3 : R3 ; ; UP1 : PRTL PRTLN1 ; PRTLN2: R7 PRTCHR  ; ; ; ; ********************* ; * * ; * UP: MOVES THE LINE* ; * POINTER UP ON LINE* ; * * ; ********************* ; ; UP : SW16  R4,$8DINIT R4 WITH RETURN * ; ********************* ; ; PRTLN : R7,$8D ; !; MOVE CURRENT LINE POINTER (R3) ; TO REGISTER 6 ; R3 R6 ; ; NOW OUTPUT TEXT INDIRECT THRU ; REGISTER 6 UNTIL A RETURN IS ; ENCOUNTERED. ; PRTLN1:  @R6 R7 PRTLN2 PRTCHR LN ************* ; ; GETLN $FD6F SW16  ; ; ; ; ********************* ; * * ; * PRTLN:PRINT LINE. * ; * A SWEET-16 SUB- * ; * ROUTINE WHICH WILL* ; * PRINT THE LINE * ; * POINTED AT BY R3. * ; * 00 P300 ;: IXY3 SADR OUTC PRLN P300 ;: IXY1 0BF  INXT,X OUTC  GADR AFND IXY4 USYM 00 OUTC OUTC PRLN ERRR  'UNDEFINED SYMBOL'  00 P300 ;: IXY4 SADR OUTC SADR+$01 OUTC PR0 OUTC PRLN ERRR  'UNDEFINED SYMBOL-'  'MUST BE ZPAGE.'  00 P300 ;: IXY6 #$B6 OUTC  GADR AFND USMZ ; IXY2 EYET IXY3 ;: NOTZ 00 OUTC PRLN ERRR  'ADDRESSING MODE REQU'  'IRES ZPAGE VARIABLE.'   ACCM,X LPTR  ACCM,X LPTR+$01 (LPTR) ;: ACCM ACUM  ADDR  IMMD  INDJ  INDX  INDY  IDXX  IDXY ;: ;: IDXY 0D1 IXY5 #$CE IXY6 IXY1 ;: IXY5 96 OUTC  GADR AFND IXY2 ;: USMZ 0H$xAFND SW25 USYM ;: SW25 SADR OUTC SADR+$01 OUTC PRLN P300 ;: SWOP A0D0F0E0B06080C07090 ;: ;: ";: CODES=ADD,CPR,DCR,INR,LDD,POP, ;: PPD,STD,STP,SUB. ;: ;: NORM 0F0 NRM1 0BF ;: NRM1  (PNTR),Y n" #:I$$#x&#`n"#x=#`n"#x(T#!)t ##x}#[ t #!] t #n"#x#!@n"#:I$$|)!P*XPXIPXIPXIPXIPXIL$P!x*#@n"H$x#@n"HI THEREz S# @Ю'٠  @˶ @˷@˸@̠ @Ԡ @ųҠ  @˵@ˠ@˱ ˠ@˲@˳ Š Ԡ@Ϡ@֠@Ų@̠@Ġ͠ @Ԡ  ͮŠ:@в̠" Š @˴@ԲϠֲ ͮŮ2 ͮŮ! Š%@ͮԠ' @ͮ&#3  MNEML,Y LMNEM MNEMR,Y RMNEM ; PRMN1 #0 #5 ; PRMN2 RMNEM LMNEM   PRMN2 #0 PRMN3 HEXOPCD ; PRMN3 :  #"?" COUT  PRMN1 ; PRMN4 : PRBLNK LENGTH #6 ; PRADR1 #3 PRAD#$8F   #3 #$8A MNNDX3 ; MNNDX1 MNNDX3  ; MNNDX2 #$20  MNNDX2  ; MNNDX3 MNNDX1  ; ; ; SCRN2 RTMSKZ     RTMSKZ #$F  ; ; ; ; ; INSTDSP : ; #" " COUT INSDS1 PPLE MONITOR DISASSEMBLY ; ROUTINES. ; INSDS1 #0 (PC,X) ; INSDS2  IEVEN  ERR #$A2 ERR #$87 ; IEVEN  FMT1,X SCRN2 GETFMT ; ERR #$80 #$0 ; GETFMT FMT2,X FORMAT #3 LENGTH  E $FD6A FMT1 $F962 FMT2 $F9A6 MNEML $F9C0 MNEMR $FA00 APLMONTR $FF59 ; ; ; ; #; DOS 3.2 (3.3) INITIALIZE ROUTINE ; (ALSO $3EA) ; DISKINIT $A851 ; ; ; ; ; ; THE FOLLOWING ROUTINES ARE ; MODIFIED VERSIONS OF THE ; ASEARCH+2 ENDSRCH TMPSRCH+2 A2 ENDSRCH+2 BYTCNT A2+2 PCPLUS1 BYTCNT+2 ; ; ; ; ; MONITOR ZERO PAGE EQUATES ; PROMPT $33 ; ; ; ; ; ; ; MONITOR CALLS AND EQUATES ; ; PRYX2 $FD96 PRBYTE $FDDA COUT $FDED GTLIN1 LMNEM LENGTH+1 RMNEM LMNEM+1 SYMADRS RMNEM+1 TEMP SYMADRS+2 PCAUX TEMP+2 BGNRANGE PCAUX+2 ENDRANGE BGNRANGE+2 STOPVAL ENDRANGE+2 MODE STOPVAL+2 STARTLOC MODE+2 STOPPOSN STARTLOC+2 SEARCH STOPPOSN+2 TMPSRCH %  $6800  $800 " "LISA DISASSEMBLER VERSION 1.0" START ; ; ; ; CONSTANTS USED BY DISASM/65 ; BELL $87 CR $8D CTRLD $84 ; ; ; ; "; ZERO PAGE EQUATES FOR DISASM/65 ; PC $80 FORMAT PC+2 LENGTH FORMAT+      $478 $41  $47E SEEK $478  SEEK L2B L2A L0478 LB9FC #$00 L26 LB9AD : L0478 L27  L2A LB9EA LB9C0 #$FF L0478 LB9C5 LB9C0 : #$FE L0478 LB9C5 : L26 MOVARM  TSL+1 $3D #$9 $27 #$0 $26 $C65C LOADER TSL+2 $41 MOVARM  TSL+3 $3D #$0A FIRST BUFHI $27 #$0 $26 $C65C LOADER2 $FF59 MOVARM #$60 #$EF $46 $D8 $47 $0047 L46 $0046 L0478 $0478 L1C1D $1C1D LBA4B $BA4B LC080 $C080 TRK $41 SEC $3D  $800  01 FIRST #$01 LOADER #$A LOADER2 L#$1 FIRST #$0 $478 $47E TSL $41  !100 !1000 !10000 DECO6 !10  !100 !1000 !10000 DECO7 !1 DECO8 !1 DECO9 !1 L27 $0027 L26 $0026 L22 $0022 L20 $0020 L2B $002B L2A $002A L30 $0030 L47 DECO6-!1,Y O DECO2  DECO5-!1,Y O DECO8  DECO6-!1,Y O DECO9 DECO7 DECO3 DECO9 DECO4 DECO3 #"0"-!1 $FDED DECO4 DECO8  DECO1   #"0" $FDED   DECO5 !10 NT PR1+2 PR1+1 #$0 PR1 $FFFF,Y  #$FF PR2 $FDED #$00 PR1 PR1+2 PR1 PR2 DECO DECOA #!0 DECO9 #!4 DECO1 #$FF DECO7  DECO2 DECO7  DECO5-!1,Y O  (4);"BRUN LISA V2.5"  PRNTAX PRBYTE PRNTX PRBYTE ; PRBLNK #3 PRBL2 #" " PRBL3 COUT  PRBL2  ; ; ; HEXOPCD :      ; #0 PRTHX3 HEX+1,X PRTHX4 COUT  PRTHX3 ; PRTHX4 : #0 (PC),Y PRBYTE ; R5 ; PRADR2 FORMAT PRADR3 CHAR1-1,X COUT CHAR2-1,X PRADR3 COUT ; PRADR3 PRADR1  ; ; PRADR4 PRADR2 PRBYTE ; PRADR5 FORMAT #$E8 (PC),Y PRADR4 ; RELADR PCADJ3   PRNTYX  ; PRNTYX LBA0B L47 LBA0B :  #$01 LBA00  LBA11 :  01302824201E1D1C1C1C1C1C C LBA1D :  702C26221F1E1D1C1C1C1C1C CFIRST 00 POINTER 02 BUFHI 40 TSL 220F110F  L27  LB9F1 LBA1D,Y L LBA00 L26 LB9AD LB9EA : LBA00  LB9EE : L0478 LB9F1 : #$03  L2B  LC080,X LL2B LB9FC :   #$A0 LBA00 : #$11 LBA02 :  LBA02 L46 #$00 L26 LB9AD : L0478 L27  L2A LB9EA LB9C0 #$FF L0478 LB9C5 LB9C0 : #$FE L0478 LB9C5 : L26 LB9CB L26 LB9CB : #$0C LB9D0  LB9D0 :  LB9EE LBA11,Y L LBA00 MOVARM  TSL+3 $3D #$0A FIRST BUFHI $27 #$0 $26 $C65C LOADER2 $FF59 MOVARM #$60 #$EF $46 $D8 $47 $478 $41  $47E SEEK $478  SEEK L2B L2A L0478 LB9FC RK $41 SEC $3D  $800  01 FIRST #$01 LOADER #$A LOADER2 L#$1 FIRST #$0 $478 $47E TSL $41 MOVARM  TSL+1 $3D #$9 $27 #$0 $26 $C65C LOADER TSL+2 $41 PR1 PR2 L27 $0027 L26 $0026 L22 $0022 L20 $0020 L2B $002B L2A $002A L30 $0030 L47 $0047 L46 $0046 L0478 $0478 L1C1D $1C1D LBA4B $BA4B LC080 $C080 T " E| | F| |" . " -------------------------------------" - FF PRINT PR1+2 PR1+1 #$0 PR1 $FFFF,Y  #$FF PR2 $FDED #$00 PR1 PR1+2 8| |R 9| |" V " A| | B| |" V " C| | D| |" V | 3| |" V "S 4| |E 5| |" V "C 6| |T 7| |" V "O ---------------------" V " |00000000000000001111111111111111222| |0123456789ABCDEF0123456789ABCDEF012|" E. " |-----------------------------------|" -V " 0| | 1| |" V " 2| $24 SECTOR $25 $FC22 #"+" $FDED  6BTXT " CRACKBOOT 1.0 "  8D8D8D8D8D8D8D8D D) "INSERT DESTINATION DISK IN DRIVE 1." I FF ^TEXT " TRACK ----------------TRACK $B7EC SECTOR  $B7ED #$B7 #$E8 $BD00 #$0 FREE1 $6000,Y #$0 FREE2  #$FF FREE2 SECPRT FREE2 SECTOR FREE #$F SECTOR  TRACK TRACK #$23 FREE  SECPRT TRACK  $2800 BEG TRACK 1 SECTOR 1 BEG $FC58 /BTXT #BTXT PRINT $C010 I1 $C000 I1 $C010 #$0 $B7EB #$1 $B7F4 #$60 $B7F1 #$0 $B7F0 TRACK #$F SECTOR FREE      EC $3D  $800  01 FIRST #$01 LOADER #$1 FIRST #$0 $478 $47E TSL TRACK MOVARM  TSL+1 $3D TSL $41 BUFHI $27 #$0 $26 $C65C LOADER $FF59 MOVARM #$60 #$EF \L27 $0027 L26 $0026 L22 $0022 L20 $0020 L2B $002B L2A $002A L30 $0030 L47 $0047 L46 $0046 L0478 $0478 L1C1D $1C1D LBA4B $BA4B LC080 $C080 TRK $41 S    Y RANGE. ; A2 STARTLOC BGNRANGE A2+1 STARTLOC+1 BGNRANGE+1 BADSTART ; ENDRANGE STARTLOC ENDRANGE+1 STARTLOC+1 BADSTART GETCMD ; ; ; ; ; ; READ THE DISASSEMBLY COMMAND ; FROM THE KEYBOARD. ; ; BADCMD : RT: #0 MSG2LOOPMSG2,X MSG2XIT COUT  MSG2LOOP ; MSG2 8D  "ENTER STARTING ADDRESS"  00 ; ; MSG2XIT : ; GETLN #$0 BLKDEL GETNUM ; ; !; CHECK STARTING ADDRESS TO MAKE ; SURE THAT IT FALLS WITHIN THE ; DISASSEMBLA2 BGNRANGE A2+1 BGNRANGE+1 ;  INPUT,Y #"." BADRANGE ;  GETNUM A2 ENDRANGE BGNRANGE A2+1 ENDRANGE+1 BGNRANGE+1 BADRANGE GETSTART ; ; ; GET STARTING ADDRESS ; ; BADSTART#BELL COUT ; GETSTAGE#BELL COUT ; ; GETRANGE: #":" PROMPT #$0 MSG1LOOPMSG1,X MSG1XIT COUT  MSG1LOOP ; MSG1 8D  "ENTER RANGE OF DISASSEMBLY"  00 ; ; ; INPUT DISASSEMBLY RANGE ; MSG1XIT : ; GETLN #0 BLKDEL ; GETNUM HICH READS IN ; THE DISASSEMBLY RANGE. ; PLEASE FORGIVE ME FOR THE ; SIMPLY (AND BULKY) I/O BEING #; PERFORMED HERE, I WANTED TO MAKE ; THE DISASSEMBLY OF DISASM/65 ; AS EASY AS POSSIBLE FOR THOSE ; PERSONS NOT PURCHASING THE ; SOURCE. ; ; BADRAN; START OF DISASM/65 ; ; ; START : #ARRAY TEMP /ARRAY TEMP+1 #0 ; ; ; CLEAR THE SYMBOL TABLE ; CLRLOOP #0 (TEMP),Y  CLRLOOP TEMP+1 TEMP+1 /ENDARY CLRLOOP CLRLOOP GETRANGE ; ; ; !; SECTION OF CODE W STLOOP ;        #ARRAY SYMADRS SYMADRS /ARRAY SYMADRS+1 SYMADRS+1 BITSET,Y #0 (SYMADRS),Y (SYMADRS),Y ; STFMTXIT:     ; ; ; BITSET 0102040810204080 ; ; ; ; ; ; ; ; ; ; SYMBOL TABLE IS ARRANGED AS ; AN ARRAY OF 65536 BITS ; (8K BYTES). IF A BIT IS SET #; THEN THAT ADDRESS WAS REFERENCED "; IN THE CODE BEING DISASSEMBLED. ; ; STOREADR   ; ; STADDRS : #0 #3 ; STLOOP : SYMADRS+1 SYMADRS  SYMADRS FIXREL0 SYMADRS+1 ; FIXREL0 SYMADRS STADDRS SYMADRS+1 STADDRS ; ; ABSLADR #1 (PCAUX),Y SYMADRS  (PCAUX),Y SYMADRS+1 STADDRS ; ; ; ; ; ; ; ; DISASM/65 SYMBOL TABLE ; MAINTENENCE ROUTINES ; ; ; NG HERE ; #1  (PCAUX),Y RELNEG ; PCAUX SYMADRS PCAUX+1 #0 SYMADRS+1 FIXREL ; ZPAGEADR#1 (PCAUX),Y SYMADRS #0 SYMADRS+1 STADDRS ; RELNEG PCAUX SYMADRS #$FF PCAUX+1 SYMADRS+1 ; FIXREL : R 8286924A NUMABS *-ABSADR+1 ; ; ; SETFMT :    ; FORMAT #NUMZPG ; ZPLOOP ZPGADR,Y ZPAGEADR  ZPLOOP ; #NUMABS ABSLOOP ABSADR,Y ABSLADR  ABSLOOP ; #$9DRELATIVE STFMTXIT ; ; RELATIVE ADDRESSI      ; ; ; PCADJ PCADJ2 LENGTH PCADJ3 PC+1  PCADJ4  ; PCADJ4 PC RTS2  RTS2 ; ; CHAR1 ",),#(L" CHAR2 "Y"  $0  "X$L"  $0 ; ; ZPGADR 8185914D59 NUMZPG *-ZPGADR+1 ; ABSAD LB9CB L26 LB9CB : #$0C LB9D0  LB9D0 :  LB9EE LBA11,Y L LBA00 L27  LB9F1 LBA1D,Y L LBA00 L26 LB9AD LB9EA : LBA00  LB9EE : L0478 LB9F1 : #$03  L2B  LC0HHȱ p dp nL/o n p n恥ŀ偰hhh`HHiȱi p dp n Lo n p n 恥ŀ偰hh`HHo ՠhh`HHHH p h Oh hhhHHhh pLm`hhhhh` ?m .*ɠ& ɢ 恥ŀ偐 dp Mn p` ` LnHHH p dp bq pŀ偰hhh`n Ҡ n`n Ԡ n`n ٠ n` `Hؠ`HHH p l 恥ŀ偐 pLmhhh`Lm à`HHH pɠ mL\m nL\m  mL\m mL\m ?m 00, ( ɧ 恥ŀ偐 dp m p` ` Ln l ɀ#ɠ 恥ŀ偐ٍŠٍӍ q LkɮLlɬLlLlɍLl Wsns L}lil Šms mLl TmLl nLl oLl EoLl ~qLl qLl [nLll ō` m ɍLyj Vk Qمu kLYȹnsɠ` LkɮLVkɬLVkɍf Wsms pLVk qLVk pLVk pLVk 2qLVk ~qLVk qLVk pLVk`k= ΠϬɬÍΠ  Lk Wsnsɮг WsŌ卐L.j ;j ҠǠ s Lk WsŌ卐Ŕ啐LjȄ ns Ĉj s LkɮLjɬLjLjɍM Wsň剐Ş埐msؤMYJHHi% iAɝs0eiLUiLuieeLuiȱLuiHHFfjJJJJJeueihh` @u扥ɕLi 3i" ҠŠƠ sLiJ jɢ )Jb Fh)) JJJ Ȉ`JJJJ)` h&*Lhi hh h `0 豀 hȘ L `HHHm hhh`8e`    $46 $D8 $47 $478 TRACK  $47E SEEK $478  SEEK L2B L2A L0478 LB9FC #$00 L26 LB9AD : L0478 L27  L2A LB9EA LB9C0 #$FF L0478 LB9C5 LB9C0 : #$FE L0:  #$01 LBA00  LBA11 :  01302824201E1D1C1C1C1C1C C LBA1D :  702C26221F1E1D1C1C1C1C1C CFIRST 00 POINTER 02 BUFHI 40 TSL 220F110F  C CFIRST 00 TRACK 1 POINTER 02 BUFHI 40 TSL 110F00001100FF  T 00 TRACK 1 POINTER 02 BUFHI 40 TSL 220100001100FF  2B  LC080,X LL2B LB9FC :   #$A0 LBA00 : #$11 LBA02 :  LBA02 L46 LBA0B L47 LBA0B :  #$01 LBA00  LBA11 :  01302824201E1D1C1C1C1C1C C LBA1D :  702C26221F1E1D1C1C1C1C1C CFIRS9C5 : L26 LB9CB L26 LB9CB : #$0C LB9D0  LB9D0 :  LB9EE LBA11,Y L LBA00 L27  LB9F1 LBA1D,Y L LBA00 L26 LB9AD LB9EA : LBA00  LB9EE : L0478 LB9F1 : #$03  L$D8 $47 $478 TRACK  $47E SEEK $478  SEEK L2B L2A L0478 LB9FC #$00 L26 LB9AD : L0478 L27  L2A LB9EA LB9C0 #$FF L0478 LB9C5 LB9C0 : #$FE L0478 LBLB9EE LBA11,Y L LBA00 L27  LB9F1 LBA1D,Y L LBA00 L26 LB9AD LB9EA : LBA00  LB9EE : L0478 LB9F1 : #$03  L2B  LC080,X LL2B LB9FC :   #$A0 LBA00 : #$11 LBA02 L2A L0478 LB9FC #$00 L26 LB9AD : L0478 L27  L2A LB9EA LB9C0 #$FF L0478 LB9C5 LB9C0 : #$FE L0478 LB9C5 : L26 LB9CB L26 LB9CB : #$0C LB9D0  LB9D0 :   $800 L27 $0027 L26 $0026 L22 $0022 L20 $0020 L2B $002B L2A $002A L30 $0030 L47 $0047 L46 $0046 L0478 $0478 L1C1D $1C1D LBA4B $BA4B LC080 $C080 L2B  Թ oo]0efoL8`L8of (!`T fSo 5 8 bSS]` "' " "! L       !$ H* h ԹL Ơ bL$C ޹$` Թ $b i eȱ  Lla(Ќv[ݗ x Šנ/ݠ/Ԡ/ /L x //Ԡκ/L x(  Ԡ˺ * Ɉɋɕ&Ɋ"ɛ2ɍ6oofԽ]ooL`HhHhHhe݌`LI%ƩIʌʆ JJJJ`abde" clm / 8 E#w`abc  X>  I塀諾 i) (0 e 氚L 簒 ꐤ  DDDDDDDDDDDDDDDDHh`݌L݌HhHhƳ݌       Hh꽎hh`HHs ڠhh`HH jnsnsɍLBsnshh` &&L]snsI i` .` c((E2  PL Y0Ɛ*'Ǝ0 L +8`Ə0  ʭM-8(0@Юh`HHHFfFfFfiiuFfFfFfiiuuLr LrH]i8u && && && sLr o hLXr晥Ŗ嗰LOr镰Ŝ坐LOrLOrhŀ偰`HHȱ rii恥ŀ偰hh`HH rii恥ŀ偰hh`HHrq Ӡhh`HHH8倪iHH bqh h iihhh`HHHq Ǡ hh拥ŀ偰FHH dpթ o 8 Loŀ偐Lohh`FfjJJJJJiiui1`HHH dp']i hhh8`hhh`HH h i Oh h ŀ偰hh`WN YCOR VAR  P3 #$0 P4 #$4   A $800 BEG XCOR 1 YCOR 1 VAR 1 DOWN 1 BEG #$8 YCOR PLOT #$0 VAR DOWN YCOR P1 VAR P2 VAR  #$08 VAR DOWN P1 P2 VAR  #$08 VAR DO EC $3D  $800  01 FIRST #$01 LOADER #$1 FIRST #$0 $478 $47E TSL TRK TRACK TSL+1 SEC MOVARM  BUFHI $27 #$0 $26 $C65C LOADER $FF59 MOVARM #$60 #$EF $46 TL27 $0027 L26 $0026 L22 $0022 L20 $0020 L2B $002B L2A $002A L30 $0030 L47 $0047 L46 $0046 L0478 $0478 L1C1D $1C1D LBA4B $BA4B LC080 $C080 TRK $41 S  LBA1D,Y L LBA00 L26 LB9AD LB9EA : LBA00  LB9EE : L0478 LB9F1 : #$03  L2B  LC080,X LL2B LB9FC :   #$A0 LBA00 : #$11 LBA02 :  LBA02 L46 LBA0B L47 LBA0B : L0478 L27  L2A LB9EA LB9C0 #$FF L0478 LB9C5 LB9C0 : #$FE L0478 LB9C5 : L26 LB9CB L26 LB9CB : #$0C LB9D0  LB9D0 :  LB9EE LBA11,Y L LBA00 L27  LB9F1 +3 $3D #$0A FIRST $27 #$0 $26 $C65C LOADER2 $FF59 MOVARM #$60 #$EF $46 $D8 $47 $478 $41  $47E SEEK $478  SEEK L2B L2A L0478 LB9FC #$00 L26 LB9AD EC $3D  $800  01 FIRST #$01 LOADER #$A LOADER2 L#$1 FIRST #$0 $478 $47E TSL $41 MOVARM  TSL+1 $3D BUFHI $27 #$0 $26 $C65C LOADER TSL+2 $41 MOVARM  TSLL27 $0027 L26 $0026 L22 $0022 L20 $0020 L2B $002B L2A $002A L30 $0030 L47 $0047 L46 $0046 L0478 $0478 L1C1D $1C1D LBA4B $BA4B LC080 $C080 TRK $41 S L2B  LC080,X LL2B LB9FC :   #$A0 LBA00 : #$11 LBA02 :  LBA02 L46 LBA0B L47 LBA0B :  #$01 LBA00  LBA11 :  01302824201E1D1C1C1C1C1C C LBA1D :  702C26221F1E1D1C1C1C1C1 F؅G`@ ~j ` 478 LB9C5 : L26 LB9CB L26 LB9CB : #$0C LB9D0  LB9D0 :  LB9EE LBA11,Y L LBA00 L27  LB9F1 LBA1D,Y L LBA00 L26 LB9AD LB9EA : LBA00  LB9EE : L0478 LB9F1 : #$03 :  LBA02 L46 LBA0B L47 LBA0B :  #$01 LBA00  LBA11 :  01302824201E1D1C1C1C1C1C C LBA1D :  702C26221F1E1D1C1C1C1C1C C LBA4B L22  1F L1C1D,X L 1C  1C  1C  1C  7 6@ 7A %6 7 ` L4 ɰl@  DECO4 DECO3 #"0"-!1 $FDED DECO4 DECO8  DECO1   #"0" $FDED   DECO5 !10  !100 !1000 !10000 DECO6 !10  !100 !1000 !10000 DECO7 !1 DECO8 !1 DECO9 !1 C  DECO DECOA #!0 DECO9 #!4 DECO1 #$FF DECO7  DECO2 DECO7  DECO5-!1,Y O  DECO6-!1,Y O DECO2  DECO5-!1,Y O DECO8  DECO6-!1,Y O DECO9 DECO7 DECO3 DECO9  #$01 LBA00  LBA11 :  01302824201E1D1C1C1C1C1C C LBA1D :  702C26221F1E1D1C1C1C1C1C CFIRST 00 POINTER 02 BUFHI 40 TSL 220F110F  LBA1D,Y L LBA00 L26 LB9AD LB9EA : LBA00  LB9EE : L0478 LB9F1 : #$03  L2B  LC080,X LL2B LB9FC :   #$A0 LBA00 : #$11 LBA02 :  LBA02 L46 LBA0B L47 LBA0B : L0478 L27  L2A LB9EA LB9C0 #$FF L0478 LB9C5 LB9C0 : #$FE L0478 LB9C5 : L26 LB9CB L26 LB9CB : #$0C LB9D0  LB9D0 :  LB9EE LBA11,Y L LBA00 L27  LB9F1 $3D #$0A FIRST $27 #$0 $26 $C65C LOADER2 $FF59 MOVARM #$60 #$EF $46 $D8 $47 $478 $41  $47E SEEK $478  SEEK L2B L2A L0478 LB9FC #$00 L26 LB9AD :EC $3D  $800  01 FIRST #$01 LOADER #$A LOADER2 L#$1 FIRST #$0 $478 $47E TSL $41 MOVARM  TSL+1 $3D #$9 $27 #$0 $26 $C65C LOADER TSL+2 $41 MOVARM  TSL+3L27 $0027 L26 $0026 L22 $0022 L20 $0020 L2B $002B L2A $002A L30 $0030 L47 $0047 L46 $0046 L0478 $0478 L1C1D $1C1D LBA4B $BA4B LC080 $C080 TRK $41 SD0 0A8A8A8 8 2828282828282828 8 A8A8A8A8A8A8A8A8 8 2828282828282828 8 A8A8A8A8A8A8A8A8 8 5050505050505050 0 D0D0D0D0D0D0D0D0 0 5050505050505050 0 D0D0D0D0D0D0D0D0 0 5050505050505050 0 D0D0D0D0D0D0D0D0 0 5050505050505050 0 D0D0D0D0D0D0D03F 3LO 0000000000000000  8080808080808080 0 0000000000000000 0 8080808080808080 0 0000000000000000 0 8080808080808080 0 0000000000000000 0 8080808080808080 0 2828282828282828 8 A8A8A8A8A8A8A8A8 8 2828282828282828 8 A8A8A8A8A835393D 1 22262A2E32363A3E 2 22262A2E32363A3E 2 23272B2F33373B3F 3 23272B2F33373B3F 3 2024282C3034383C 0 2024282C3034383C 0 2125292D3135393D 1 2125292D3135393D 1 22262A2E32363A3E 2 22262A2E32363A3E 2 23272B2F33373B3F 3 23272B2F33373BHI 2024282C3034383C  2024282C3034383C 0 2125292D3135393D 1 2125292D3135393D 1 22262A2E32363A3E 2 22262A2E32363A3E 2 23272B2F33373B3F 3 23272B2F33373B3F 3 2024282C3034383C 0 2024282C3034383C 0 2125292D3135393D 1 2125292D31    THE DISASSEMBLY BEGIN. ; ; ; ; FIRST, GO THRU THE CODE TO BE ; DISASSEMBLED AND GET ALL THE ; ADDRESS REFERENCES. ; DONE : STARTLOC PC STARTLOC+1 PC+1 #0 PASS1 ; ; !; TURN THE DISK OPERATING SYSTEM ; ON. ; DISKINIT #$ TEMP+1 ; ; INPUT-1,Y #"H" PARSE #"N" PARSE #"W" PARSE #"L" PARSE #"S" PARSE #"P" PARSE #"I" PARSE #"O" PARSE #"V" PARSE #CR DONE BADCMD ; ; "; OK, THE COMMAND IS A VALID ONE. ; LET  PARSE ; PARS1 #"," PARS2  PARSE ; PARS2 : #"I" PARS2.0  PARSE ; PARS2.0 : #CR DONE GETNUM A2 TEMP A2+1 TEMP+1 BADCMD ENDRANGE A2 ENDRANGE+1 A2+1 BADCMD ; A2 TEMP A2+13XIT : GETLN STARTLOC TEMP STARTLOC+1 TEMP+1 #0 ; ; ; CHECK THE INPUT LINE TO ; MAKE SURE THE ADDRESSES ARE ; IN THE CORRECT ORDER AND ; THAT THE DISASSEMBLY COMMAND ; IS SYNTACTICALLY CORRECT. ; PARSE BLKDEL #"." PARS1  TEMP #BELL COUT #0 ; PRTBAD INPUT,Y COUT  TEMP PRTBAD PRTBAD ; ; ; ; !; NORMAL GET-COMMAND ENTRY POINT ; GETCMD : #0 MSG3LOOPMSG3,X MSG3XIT COUT  MSG3LOOP ; MSG3 8D  "CMD"  00 ; MSGTER 02 BUFHI 40 TSL 220F110F  X80,X LL2B LB9FC :   #$A0 LBA00 : #$11 LBA02 :  LBA02 L46 LBA0B L47 LBA0B :  #$01 LBA00  LBA11 :  01302824201E1D1C1C1C1C1C C LBA1D :  702C26221F1E1D1C1C1C1C1C CFIRST 00 POINLBA0B :  #$01 LBA00  LBA11 :  01302824201E1D1C1C1C1C1C C LBA1D :  702C26221F1E1D1C1C1C1C1C CFIRST 00 POINTER 02 BUFHI 40 TSL 220F110F  LB9F1 LBA1D,Y L LBA00 L26 LB9AD LB9EA : LBA00  LB9EE : L0478 LB9F1 : #$03  L2B  LC080,X LL2B LB9FC :   #$A0 LBA00 : #$11 LBA02 :  LBA02 L46 LBA0B L47 LB9AD : L0478 L27  L2A LB9EA LB9C0 #$FF L0478 LB9C5 LB9C0 : #$FE L0478 LB9C5 : L26 LB9CB L26 LB9CB : #$0C LB9D0  LB9D0 :  LB9EE LBA11,Y L LBA00 L27  $3D #$0A FIRST BUFHI $27 #$0 $26 $C65C LOADER2 $FF59 MOVARM #$60 #$EF $46 $D8 $47 $478 $41  $47E SEEK $478  SEEK L2B L2A L0478 LB9FC #$00 L26 EC $3D  $800  01 FIRST #$01 LOADER #$A LOADER2 L#$1 FIRST #$0 $478 $47E TSL $41 MOVARM  TSL+1 $3D #$9 $27 #$0 $26 $C65C LOADER TSL+2 $41 MOVARM  TSL+3L27 $0027 L26 $0026 L22 $0022 L20 $0020 L2B $002B L2A $002A L30 $0030 L47 $0047 L46 $0046 L0478 $0478 L1C1D $1C1D LBA4B $BA4B LC080 $C080 TRK $41 S     $6000 #$00 $42 $3C #$67 $3D $3F #$FF $3E #$B7 $43 #$00 $FE2C $B700  INT OUT THE REQUIRED EQUATES ; EQU_EPZ ; ; "; HANDLE THE DISASSEMBLY COMMANDS ; PAS2.0 BLKDEL #"." PASS2.1  PAS2.0 ; PASS2.1 #"," PASS2.02  PAS2.0 ; PASS2.02#"I" PASS2.2  PAS2.0 ; ; PASS2.2 #CR *+5 : ; ; ; OPEN THE FILE "DISASSEMBLY" ; #0 MSG4LOOPMSG4,X MSG4XIT COUT  MSG4LOOP ; MSG4 8D84  "MON O,I,C"  8D84  "OPEN DISASSEMBLY"  8D84  "WRITE DISASSEMBLY"  8D  "INS"  8D  ";"  00 ; ; MSG4XIT : ; !; PR PASS1 ; PASS1.9 : #"O" PASS1.10 GETORG  PASS1 ; PASS1.10: #"V" PASS1.11 GETHEX  PASS1 ; ; PASS1.11: ; ; ; ; PAS1DONE:  ; ; ; ; PASS2- ACTUALLY WRITES THE "; DISASSEMBLED CODES OUT TO DISK. ; ; PASS2 PASS1.3 #"W" PASS1.5 GETADRS  PASS1 ; PASS1.5 #"L" PASS1.6 LIST  PASS1 ; PASS1.6 #"S" PASS1.7 GETHEX  PASS1 ; PASS1.7 #"P" PASS1.8 GETPUSH  PASS1 ; PASS1.8 : #"I" PASS1.9 GETIGNOR : ; #CR PAS1DONE ; ; !; ITS NOT A DELIMITER, THEREFORE ; IT MUST BE AN ADDRESS. ; GETNUM A2 STOPVAL A2+1 STOPVAL+1 ; ; SEE WHAT TYPE OF DISASSEMBLY ; COMMAND IT IS. ; INPUT-1,Y #"H" PASS1.3 GETHEX  PASS1 ; S1 ENTERS ALL ADDRESS ; REFERENCES INTO THE DISASM/65 ; SYMBOL TABLE. ; ; ; PASS1 : ; ; DELETE LEADING SPACES AND ; REMOVE ANY DELIMITERS. ; BLKDEL #"." PASS1.1  PASS1 ; PASS1.1 : ; #"," PASS1.2  PASS1 ; PASS1.2 E MONITOR OR BASIC WORKS ; OUT OK. ; #0 FILLCR #CR $200,X  FILLCR ; ; APLMONTR ; ; ; ; ; #; BLKDEL- "DELETES" LEADING SPACES ; FROM THE INPUT BUFFER. ; BLKDEL BLKDLOOP INPUT,Y #" " BLKDLOOP  ; ; ; ; PAS80 $D9 $75 ; ; ; LET PASS TWO BEGIN. ; DURING THIS PASS, THE DIS- ; ASSEMBLED CODE IS WRITTEN TO ; THE DISK. ; STARTLOC PC STARTLOC+1 PC+1 #0 PASS2 ; ; !; KLUDGY WAY TO FIX UP THE INPUT ; BUFFER SO THAT THE RETURN TO ; THg ;INTERRUPT $86CD $C010 K $C000 K #"T" $8667 $8100 $8667  7) Cx~A R= '&L\ƭA R= '&L\LY`F؅GxA ~ lNx`+*xS&x'8*3Ixix&& 8  '  & x)*++`FG8`0($ p,&"@"  L2 $403   $B700 L1 #$BF #$E8 $BD00 $B7F1 $B7ED $B7ED #$9 L1 #$0 L2 $2200,Y $200,Y  $2300,Y $ $300,Y  $2400,Y $ $400,Y  $2500,Y $ $500,Y  $2600,Y $ $600,Y  $2700,Y $ $700,Y    PAS2.0 ; PAS2.5 #"L" PAS2.6 PRTINST  PAS2.0 ; PAS2.6 #"P" PAS2.8 PRTPUSH  PAS2.0 ; PAS2.8 : #"I" PASS2.9 GETIGNOR  PAS2.0 ; PASS2.9 : #"O" PASS2.10 GETORG  PAS2.0 ; ; PASS2.10: WRITE,X MSG9.0 COUT  MSG9 ; WRITE 8D84  "WRITE DISASSEMBLY"  00 ; MSG9.0 : INPUT-1,Y #"H" PAS2.3 PRTHEX  PAS2.0 ; PAS2.3 #"S" PAS2.4 PRTASCII  PAS2.0 ; PAS2.4 #"W" PAS2.5 PRTADRS PAS2DONE ; GETNUM A2 STOPVAL A2+1 STOPVAL+1 ; ; ; TEST FOR IGNOR MODE ; INPUT,Y #"I" NOIGNOR ; ; TURN OFF WRITE DISK MODE ; #CR COUT #CTRLD COUT MSG9.0 ; ; TURN ON WRITE DISK MODE ; NOIGNOR : #0 MSG9 $B680 $3680 #$40 $1801 #$F $B7ED #$4 $B7EC #$17 $B7F1 T1 #$B7 #$E7 $BD00 $B7F1 $B7ED T1 $1800 #$00 $61C2   $EF $46 $D8 $47 $478 $41  $47E SEEK $478  SEEK L2B L2A L0478 LB9FC #$00 L26 LB9AD : L0478 L27  L2A LB9EA LB9C0 #$FF L0478 LB9C5 LB9C0 : #$FE 8 $47E TSL $41 MOVARM  TSL+1 $3D #$9 $27 #$0 $26 $C65C LOADER TSL+2 $41 MOVARM  TSL+3 $3D #$0A FIRST BUFHI $27 #$0 $26 $C65C LOADER2 $FF59 MOVARM #$60 #L30 $0030 L47 $0047 L46 $0046 L0478 $0478 L1C1D $1C1D LBA4B $BA4B LC080 $C080 TRK $41 SEC $3D  $800  01 FIRST #$01 LOADER #$A LOADER2 L#$1 FIRST #$0 $47--" - FF PRINT PR1+2 PR1+1 #$0 PR1 $FFFF,Y  #$FF PR2 $FDED #$00 PR1 PR1+2 PR1 PR2 L27 $0027 L26 $0026 L22 $0022 L20 $0020 L2B $002B L2A $002A | |" V " C| | D| |" V " E| | F| |" . " ----------------------------------- |" V "C 6| |T 7| |" V "O 8| |R 9| |" V " A| | B--------------------------|" -V " 0| | 1| |" V " 2| | 3| |" V "S 4| |E 5| L $2800 BEG /TEXT #TEXT PRINT  ^TEXT " TRACK -------------------------------------" V " |00000000000000001111111111111111222| |0123456789ABCDEF0123456789ABCDEF012|" E. " |---------       2 $610A     #$12 $800 ̶ƍō̷٠̲ƺ̶Ʃٍ̲ıѠ̲ōҠ̷ٍĠƍŠ̲Ű̲Ĺՠɠ̲ư٠Š̲ƍ̲Ű̲űɠ̲Ÿ٠̶ƩٍŠ̠ؠؠҠҠø̲ՠà̠ؠؠؠРŴĠٍ̰àà̶ƍ̶ƍ̷̲Ġՠà̷٠ӠؠؠƍؠIJ̠̰؍ؠҠؠؠؠؠ̠à̲ıؠ̲ؠؠƍ٠̰ōà̲Ĺؠ̲à̲űĠؠƍ̠ؠؠ̵ٍҠ̲ؠƍˠ̵̲ةӍ̵ڠ̴ՠ̴ՠ̵ ՠ̵ՠՠ²ՠ²̵ٍؠҠ̴ɠҠ²̵ةؠؠҠ̴̵ٍؠҠ̵#"V" PASS2.11 GETVAR  PAS2.0 ; ; PASS2.11: ; ; ; ; ; ; PAS2DONE: #0 CLSD CLOSE,X CLSD0 COUT  CLSD ; CLOSE 8D84 "CLOSE"  8D00 ; CLSD0 :  ; ; ; ; ; ; "DISASM.2" ;6@췩񷩷  a`] X  `6 C1C1C CFIRST 00 POINTER 02 BUFHI 40 TSL 220F110F  3  L2B  LC080,X LL2B LB9FC :   #$A0 LBA00 : #$11 LBA02 :  LBA02 L46 LBA0B L47 LBA0B :  #$01 LBA00  LBA11 :  01302824201E1D1C1C1C1C1C C LBA1D :  702C26221F1E1D1C1C1L0478 LB9C5 : L26 LB9CB L26 LB9CB : #$0C LB9D0  LB9D0 :  LB9EE LBA11,Y L LBA00 L27  LB9F1 LBA1D,Y L LBA00 L26 LB9AD LB9EA : LBA00  LB9EE : L0478 LB9F1 : #$0$3E #$3F $3F #$0 $FE2C $900 $800  $BFEB $BFEC #$09 $BFED #$3F $BFF1 L1 #$BF #$E8 $BD00 $BFF1 $BFED L1 #$D $B7ED #$08 $B7F1 #$BF #$E8 $BD00 #$0 $42 $3C #$B7 $43 #$37 $3D #$FF > $610A     #$12 $BFEC #$0 $6DEC #$0 $BFEB #$1 $BFF4 $BFEA #$0E $BFED $BFF1 #$0 $BFF0 LUTIL #$BF #$E8 $BD00 $BFF1 $BFED $BFED #$08 LUTIL #$0   '(ȱv)ȱHHŴ嵐?v 8ȥ L&ܽݠ셑ȱ셒hhh8`hhh`n6880 ;  ; ; PCIM RDLN+$3 MOVR PCIM+$3 MOVL MOVR+$3 TSTD MOVL+$3 CVDH TSTD+$3 INIT CVDH+$3 PSPC FOUND AT LINE # eзL`H><L۱I@I@H5Hy`*$<>!%'";z֢yȹ ؙ ڐ/ MLABEL TOO LONG`yL֢ȹ ؐ`Lȹ Lֹ-Ȣȹ `ȹI0)2`ȹ ȹ'Lȹ ȹ"L֥y8`ȹ N OPERAND FIELDLЩ ְ`L ְ` ؙ82 JE1hh MMUST USE ",X)", "),Y", OR ")"Lй)ө)ߙYéȹ  `8` ְ`,)`Lȹ)ߙX$Y+hh MONLY "X" OR "Y" ALLOWEDLЙLՙGAL SWEET-16 OPERANDLЩL,ԩ ȹ Rǭɾ.ȹ ذ"hh MILLEGAL SWEET-16 REGISTERLLȩ ذL<ȹ,` ֈLչ ;Lԩ8` ְ`Lչ   ؐ(LLHH`#/("'*$!%<>hh MILLEGAL SYMBOL I-HH`PW''W****TTTcPT8*T**P*'''TTT-TLӭ L(נ MEQU/EPZ MUST HAVE A LABELhhLЭ LUӭ L( MLABEL NOT ALLOWED HERE` !;hh MOPERAND NOT ALLOWEDLЩ8` R%@)hh MILLE;* + MILLEGAL BLANK IN OPERAND FIELDhLЩh u   t LЄtxtr9 r  xt8`xrirsLҤt` uҐ8`HH`Կ䵘8تN LABELLЍ ؍ :ʠ, :"  ڰ=Х :К : L  ذ).%= MILLEGAL MNEMONIC.LЩLѭrs {Ґ Ұ MILLEGAL OPERAND.L Lٰ MILLEGAL ADDRESSING MODE.LИH 0LL2LjLL9۬i( MMEMORY FULL`8e`  ^ **ERROR: `, , Q 8``   ;*^A  ذULs` Ȍ ` MBAD CHARACTER I                 Lz{|ߦ X0 Ǡpd Le L|LĠͮŮİĠͮŮİ L`ӠĠͮŬ` "`LЭLЭ'( u 1 u 2 L 쭀 Э` **END OF PASS ` `@ `󅯩L8e 5NO ENDLȱL);*ʠ L&eheh`I0  eI0`HHH hhh`HHHLhhh`TSTLConvert L/C (MLUP),Y FND3   LLL5LL뭀 ` 2H7 hLh ɰ, fhh` d' { 0`:0`` G [ i LQ ``HHH  fL~) B 2 4 " fƩ/ f b L| Lꥇ fL L fL bhhh`H&H&( )? (`@#05餆`޼άݍ``L麥` G [ iLQ f L` G [ i LQ`Hȱh` G [ i LQ G JLQHH8L! MNELKUP MNTBL MLUP MNTBL+$1 MLUP+$1 FNDM ERR0 ;: DOGETO : GETO CHKAMODE EROR 'ILLEGAL'  LwLuLgL,LBL LrLLfLKLLL[Li鄅H ɓ)I(Lɛ  L H(h)h` IAIA `$TEMS VERSION 2.5G -- 64K L/B@fm BLOAD ,A$ iL BAD FILENAME ` LHH ; hhL;@> BSAVE ,A$ i ,L$ ` ;8 4 4 L H h kɻ e 4`8 k LEpt k Ld ة-Vʩ/V X LAZER SYSTEM'S INTERACTIVE SYMBOLIC ASSEMBLER (C) 1981 LAZER SYSROLASLADREQUORGOBJEPZSTRDCMASCICLENDLSTNLSHEXBYTHBYPAUDFSDCIPAGINVBLKDBYTTLSBCLET.IF.EL.FI= PHSDPH.DAGENNOGUSRENZL#ȱ0M*;L00 H :hL : L#h:L k kL )H hemmEBLTBMIBCCBCSBPLBNEBEQBVSBVCBSBBNMBM1BNZBIZBIMBIPBICBNCBRABTRBFLBRKBKSCLVCLCCLDCLIDEXDEYINXINYNOPPHAPLAPHPPLPRTSRTIRSBRTNSECSEISEDTAXTAYTSXTXATXSTYAADDCPRDCRINRSUBLDDPOPPPDSTDSTPLDRSTOSETADCANDORABITCMPCPXCPYDECEORINCJMPJSRLDALDXLDYSTASTXSTYXORLSRROR ,  `iiL@L@ ,ɠ,ɃL/ R u z`` `H  h` "h , `  z  ;  `ei ;  `H hH h ``BGhh```````HH +eihh` ; `     ᭈ z " L; 8` BAD # ` > ` LEAR? )YLx` H ! OPEN WRITEh,  INS + u zLV  CLOSE ` !  `a)_ L   ` +#e 4L`HH OSTK LxL/L,L=LLuL;LRL>LQ ` pt^! >fm̍م3vua)_ݠ4)_ݱ* WHAT? L=BLLSAIDLANMWF ROEAP L=les` w,L L C(POSN),Y ;:  POSN POSN FLS3 POSN+$01 FLS3 ;: ;: ;: ;: EROR- PRINTS AN ;: ERROR MESSAGE ;: EROR #$5 PSPC  >0 PSPC ; ^0 #'^' PUTC PCIM 0D0D07 '**ERROR:'  2000 ;: STKA OTAI S;: ;: ;: FLSH-TRANSFERS ;: PAGE 3 TO TEXT- ;: FILE. ;: FLSH PAG3 POSN CSAVE   POSN+$1 #2  CSAVE+$1 FLS1 ; EROR  'MEMORY FULL'  00 05 PAG2  ; ; FLS1 PAG3,Y (POSN),Y  FLS1 ;: PAG3 INIT+$3 PUTC PSPC+$3 PINT PUTC+$3 PCIA PINT+$3 OTAI PCIA+$3 STKA OTAI+$3 SSTK STKA+$3 ;: ; SETVID $FE95 SETKBD $FE8B DSK $A851 ;: ;: ; ; ; ; ; ; ; GETLT MLTPLY DIVSN FIND SLUP `ɠɍZɊZɈ$!$$"% %% e (`I(ii,i\$%H $ hi#ʥ"%$$%%#%"H $(*)+!hi# H $(*0 $(!`8Hh`BC<>=?<=`K i! Ȉ2 ,`H h*:` `: V:8 J8L Lӭpd`HVTQ PS 6" (!#%L" PJ TuVTvP` P&Q&R&S8RTSURSP`/T P 8/`HJ) )h)i( ((`ɇ@ 0`$($$!fi#bZH&bTDThDt(ntJrtttrDh2"&&rr&HDD h,h-<:B/ Y`EL\lY@5)I:< ?L<EhH 0l( Lh:h; LehHh:h;/ V; THH::;:-H,H E@A  J 0,*i H/.  `0 .: VȘ L `8/;e:` T0 "T3  T3  T; "D3 D"D3 D"D3 "D3 &1!YMJؤ#]#)i#$S#$S[[i$$)|mi)S4PAJ G(i.&E0%.Q&&` , iH h-`/'-'0 (`HJ) 'h)i& &&`0i)0 00`J G&(JJJJ)`:; H:J jɢ )Jb y.)/) JJJ Ȉ` H:  J/Ȑh,--&LdHH hőhŒ "`L,L ` **ERROR AT LINE :  C)ONTINUE OR A)BORT? )AL` 0A PAG3+$A PAG2,Y TSTH SWO8 SWTREG ;: SWO8 H 8h呅h咅 `*$HH hh Э `/$HH hh Э `|HH hhLb&HH h%h%ĩLb^HH hEhELb=,HH hőhŒhLbhLb#ȱ-L 怒 8呅咅L 勒LȱꅑȱLȱ LK8ȱLH "h `hLȱ DA8) XLHh+HH hehe `-H񤓈 5ABS,Y IS NOT ALLOWED.LL? L?L ( (,Lȱ'" (,L kLZȱꅝȱŝȱŝ (Lq`$L< >A[L}*Ld!I%L4'LH"L\ = 5** DAMAGE ** ILLEGAL CHARACTER IN OPERAND`` $pL#򥙅LeeLȱ ?,ȱ# ( L;/ ( L;'" kL; ( ( L;L )LȱL L L 5 L 񤓈 5STY ABS,X NOT ALLOWEDLL?F 2L L?eeL $P L 5ILLEGAL FORWARD REFERENCE.L 5EQU W/O LABELL L lL 5UNMATCHED IF/EL/FI` 5NESTED IF'S NOT ALLOWEDL L $p 5UNDEF SYMBOLL陋 ` lL8eȱɥ ɖ ( (L ɾ# (LԐذȱ ( ( (LL8 aH`H`3CjGG3CWZC(8ȱ D (L ( kL L $PIL $P1eeȱL;*^  :L "L1  ȥL 5DUPLICATE LABELL L陵 L :a^& 5LOCAL LABELS MAY NOT BE EQUATEDL $P L 5UNDEF. SYMBOL/ILLEGAL ADDRESSL陵8) XL+HH hehe `-HH 8h呅h咅 ` "; 5SYMBOL WAS NOT PREVIOUSLY DEFINED IN AN EPZ STATEMENT.`L Ȣ LH ᅒh`ȩ1 0&&L8&&L`L8ehh8 褓 BLOAD "'  ,A$ >fm`@>fm`$RA[LE!3%7 L 5ILLEGAL OPERAND IN ADDRESS FIELD` L L ȱ DA) ɻ 5EPZ > $FF` L LLk LLkL0 : AG`8`&&&&`#ij 쥐`  BLOAD TEMP. @ L| lL ]  BSAVE TEMP.,A$ ,L$HH ` $P L[L L[_ȱ"' 8۱, L[# $P LI/ $P LI $P ڥ LI  L[  ) L[ -ܩ p ***** END OF ASSEMBLY ` 륙ƚƙ`Lބhh Lp6  LET W/O LABELL[Р ڠȥ L[C.L ۥL[ UNMATCHED IF/EL/FIL[ ٥ݩL[Х NESTED IF'S NOT ALLOWEDL L[ $p L ۥ `8eH hȱ+ȱꅝȱŝ L L[8ȱ * &ɻ"A) ȱA) L2 L[, FLOATING POINT NOT YET IMPLIMENTEDL[  L[ L[2مvu  ȱꅝȱŝ Lة L[HHH h $pLҥ, ڄƻƺL eeee L[ $pLҥ L[ L[ȥ쥚  Lȩ 8 L[4ȩ 8ۤIƜƛI L[? 8 L[?@ 8 L[$pLҥ ڥ ڱ, L[ $pLҥ ڱ, L[:ȱ"' 8۱, $pLҥ ڱ, L[  L[ L[ PAUSE ENCOUNTEREDL[" $pLҥ L[_ $pLұ,-Lq1QQ $pLaҥLҥ L[h L $pLҥ ڥ L[ LAH $phLҥ'h8鿪 LLm- ,MMNn.h8鿪 ڥ L[e%$EEFf&" $pLҥ ڥ ڱ, L[" * h8鿪 ȱ#/, $pLҥ L[ $pLҥ L[' ȱ L["ȱ L[Щȱ ܰ L[A)Lgi) IIl h $pLҥ ڥ L[h8鿪 La!AAh8鿪 p" UNDEFINED SYMBOLL[Х ڥ L[y9YYh" $pLaҥLҥ L[8H ڥ9$phLh ڥ ڥ L[}=]]^~>$phLah ڥ L[u5UUVv6h8Ԫ L[Jj$pLҥ ڥ L[Р`pHȱ 8҅8҅l7ӪIHh>Lҩ $pA UNDEFINED SYMBOL-MUST BE ZPAGE.L[Є $PȥK ڥ7 ADDRESSING MODE REQUIRES ZPAGE VARIABLE.L[Х L[Ф8鿪0 $ UNDEFINED SYMBOLL[8噅嚅ƚƙ&( BRANCH OUT OF RANGEL[Х0 L[а0pP ɼ+8鲪Hȱ@ȱA8)h L[ɾ.ɽȱ@ HLѩ@HLȱ@0HLȩPHLȱA8)  LLLQLLLLݩ멀vم􅢅(򅡠 Lp ۠8e륙ȱ0;*^ ȱ) ؐLɲ LLɖL8閪 L[ XʈHh(`@ 8x8逪n $p         !!! ! Yl  . $ ; &?1?=A>?I i`HH11`쩻듧ƙɾ5Ö+]̵h5`4ɺл1>@@A`41`>BD`8>6>) `LL u ?l:L4 uLCL@ 'A=?<) < `JJJ>Ie < >= > <= ORANDNOTSHLSHRINCDECCPYICHOCHINMONMIHXOHXIFPOFi0i6  ` ȱ & -       i0 F `0`AND ARRAY BEGIN CALL CASE CONST DIV DO DOWNTO ELSE END FILE FOR FUNC IF INTEGER MEM &402ee&#0!e0 5 L,  OL  L ` >L  ? L t L  ` Lu{vC ʊ ei(i ei(i 8 ` &&  F ȥ8 ȥ L ` p) L ɔə݅ )`rb 5 0/G+:/A7&& ,  OLbL  5 - = 0>::/&8ʐ eȱeP + ` )?% L` D L ȱ  I E` + & + ee + إȥ L ` IF +  &&&8ȑ` Piȑ`ʰ ) L &ȥ`FJ( J' ȥ H %%`)ȑ` F2L F(L {  {  { 0  { 0 L i` ? iȑ` ?  &8ȥ` <ȑ`=  `  `ȱL 8ȥ0` {  X Xȑ` { ]_0 \]֥ ^_ʥ T8IIi𵐳`8e8 L ȥ`JJJJ  ) +ȱ &8`&8`` ? L ȱL ? &8L ? L ȥ` ? P P P P /wm W W W W P P P P P P P P P  P P P L ) ȱ 86iiȥȥȥȥ` Lee8ȱȱȱ`&8#LL,L1LCLL,0 ؠʆ ȄL $ 00 )ȱȱP 8e J)ȹ LwL iP P #  7 b (  ! ! !!!!!!!!!""" " " " " """""""""      U ɻ Lީ: ɻ Lީ: ɮ L+ ɍ 詍 h`HHH$) %&$) hhh` hhhhhh` `LLDL[" SYM TABLE FULLLȥȩ`H |hi쥵퐯8Ƶȱ)iȥȥL(ݠ쥕i L`HH |ݥ ȥȩhh` `H LISA 2.5 Ģ L۩ ` p`HH0;*  hh` 륒 ॑LUܥHH  hh`0 : AG`8`쥕^:&#L( DUPLICATE LABELL(i LܠŴ嵐暤梤`ꅝȱŝȱŝ`ꅝȱŝȱŝ" % L=`,0`ɠ,Ƀ,L,`櫥 ݩ`` \ -ܠ} Ģ 섘 pi9Ģ3 -ܹ $̷bx"cn" #x5"_|dDcn" #xA"x"n"̷bXZ"DNcXy"_|dDcn""`(Y" I$! @`,Y" NcY"~I$)t #_|dDcn" Tn" #x#[ t #!] t #_|dDc$ ,Y DXD N# TTx5! @@#!$XJ! D TD#)t #;t #|^!) x!& X}!I$!̷"X!# !2I$!x!!x!  !2I$$|!(@=@M=|%$M$#!*`x #& X!hI # x @|$$| *x6  ^ # $ E \ @^  XH\ @A D _> F@|t ( Y I$| *X ^$ ;X X DN# T# N#Z! (Y I$ @ X ^$ II$$$YW=\$G@=X9G@M=@ @ |,+^* @ Ex  @  ^ t$ ܷ"x  # x |$ #@ x ܷ" @|$ xx |$ x Yx \x "_x .^x :]xFIxRHx^UxjLxvMxPxQxxI$$xpxpxtxqxuxrxvxw$ H LIx2XT\H \H/ @@xGHXDx`XZ]xXs>^I$@x@x|xTx@xDxExFxJxGxXXA_F]HI,L&e$@@X8%D$|I(tt|n)x|xдXT\H \HD@@XM0@^^II$H LIx̰xܰxx^^II$Dx>.=X&+Dx=?Dx'y 'Ys  @ RDx{}XDx(*X*Y)X (Dx%;䍱䮍Ҡ쬠堨ӠԠٍ͠ڭSE wM t٠=|󠱳Ԣ󮍢Ԣ䮍%w t tENTER MP TEXTFILE NAME:w tBLOAD wM t tENTER DESIRED LISA FILENAME:w tOPEN wM tkINSw t0Dlg*XN@<YdD|k(tWRITE wM t|XtNOMON O,I,C w t٠=T>** MICROPRODUCTS TO LISA CONVERSION**PZ $wEQU $w$@R