PX]X
 A,10000 cX  kX'"*B qX'" X$'"SETLFS=$FFBA X.'"SETNAM=$FFBD X8'"SAVE  =$FFD8 XB'"GETIN =$FFE4 XL'"CHROUT=$FFD2 XV'"PPLAY =$E31B X`'"PRECO =$E319 Yj'"RAMON =$FF3F Yt'"ROMON =$FF3E $Y~'"LOCK  =$7FC 6Y'"TIM2  =$FF02 HY'"TINT  =$FF09 XY'"SYNC  =$16 fY'"PIO   =1 lY'" Y'"FFIRST=$60     ;2B Y'"FLAST =FFIRST+2;2B Y'"DATA  =FLAST+2 Y'"CNT   =DATA+1 Y'"CHKSUM=CNT+1 Y'"TEMP  =CHKSUM+1 Y'"TOP   =TEMP+1 Z ("T0    =TOP+1  Z
("T1    =T0+1 -Z("T2=T1+1 :Z("T3=T2+1 @Z(" RZ("K=$4700-$220 dZ("WOBBLE=$4000 sZ("ORG $4700 yZ((" Z2("READ:   PHP Z<("        SEI Z=("        LDA #$B8 Z>("        STA $25C ZF("        LDA $FF19 ZP("        PHA ZZ(" [d("        JSR PPLAY  [n("LODHIG: LDX #1 4[x("RETRY:  LDA #0 K[("        STA $FF19 c[("        STA CHKSUM x[("        STA PIO [("        LDY #255 [("SYNCT: [("        JSR READB-K [("        CMP #SYNC [("        BEQ GOTSYN [(" [("        STX DATA \("        JSR SKIPB-K .\("        BCC SYNCT ;\("GOTSYN: T\)"        JSR READB-K k\)"        CMP #SYNC \)"        BEQ GOTSYN \")" \,)"        CMP FNLEN \6)"        BNE RETRY \@)" \J)"NAMCHK: INY \T)"        CPY FNLEN \^)"        BCS NMEND ]h)"        JSR READC-K -]r)"        CMP FNAM,Y E]|)"        BEQ NAMCHK \])"        BNE RETRY h])"NMEND: |])"        LDY #3 ])"GADDR:  JSR READC-K ])"        STA FFIRST,Y ])"        DEY ])"        BPL GADDR ])" ])"        JSR READC-K ^)"        CMP CHKSUM %^)"        BNE ERROR +^)" C^*"        LDY FFIRST W^*"        LDA #0 o^*"        STA FFIRST ^&*"        STA TOP ^0*" ^:*"RBLOCK: LDA FFIRST+1 ^D*"        CMP FLAST +1 ^N*"        PHP ^X*"        BCC NOTYT ^b*"        LDA FLAST _l*"        BEQ RDONE )_v*"        STA TOP 5_*"NOTYT: N_*"        JSR READC-K j_*"        STA (FFIRST),Y {_*"        INY _*"        CPY TOP _*"        BNE NOTYT _*" _*"        JSR READC-K _*"        CMP CHKSUM _*"        BNE ERROR _*" `*"        INC FFIRST+1 &`*"        PLP >`+"        BNE RBLOCK U`+"        PHA;DUMMY [`+" o` +"RDONE:  LDX #0 `*+"        BYT $2C `4+"ERROR:  LDX #$80 `>+"        PLA;DUMMY OR STATUS `H+"        LDA #$88 `R+"        STA PIO `\+"        STA LOCK af+" ap+"        PLA *az+"        STA $FF19 ;a+"        PLP Ta+"        JMP (BEGIN) Za+" pa+"READC:  LDA DATA a+"        EOR CHKSUM a+"        STA CHKSUM a+"READB:  LDA #$FE a+"        STA DATA a+"SKIPB:  STY TEMP a+"LODLOW: LDY #$38 b+"READ0:  INC $FF19 %b+"        LDA #$10 :b+"READ1:  BIT PIO Qb,"        BNE READ1 gb,"        STY TIM2 b,"        STX TIM2+1 b$,"READ2:  BIT PIO b.,"        BEQ READ2 b8,"        LDA TIM2+1 bB,"        ASL A bL,"        ROL DATA cV,"        BCS READ0 c`,"        LDY TEMP /cj,"        LDA DATA @ct,"        RTS Kc~,"LAST: Qc," dc,"BEGIN   =$2F0 wc,"FNLEN   =$2F2 c,"FNAM    =$2F3 c," c," c,"JUMP    =$304 c," c,"        ORG WOBBLE c," c," LDA #$F1 c," STA $FF15 c," LDA #$EE d," STA $FF19 d," JSR EDCLR /d,"TURBO:  LDX #0 Gd,"TUR1:   LDA MESG,X Vd -" BEQ TUR2 fd
-" JSR $FFD2 pd-" INX d-" BNE TUR1 d(-"TUR2:   JSR $FFE4 d2-" CMP #32 d<-" BCC TUR2 dF-" CMP #96 dP-" BCS TUR2 dZ-" JSR $FFD2 dd-" CMP #'1 dn-" BEQ GENHED ex-" CMP #'2 e-" BEQ GENTAP ,e-" CMP #'M =e-" BEQ MONITO Ke-" CMP #'E Ze-" BEQ EDIT he-" CMP #'3 ye-" BEQ LOADDK e-" CMP #'4 e-" BEQ CONST e-" LDA #157 e-" JSR $FFD2 e-" JMP TUR2 e-" e-"EDIT:   JSR EDITOR e-" JMP TURBO e-" f-"LOADDK:JSR DISKLD  f-" JMP TURBO 7f-"CONST: JSR CONSTT Gf-" JMP TURBO ^f-"MONITO: JSR $8117 hf-" BRK nf-" f-"GENHED: JSR WMESG1 f-" JSR WMESG2 f-" JSR WMESG5 f." JSR REPLY f." BCS GENHED f." SEI f"." LDX #0 f,."GENMVE: LDA READ,X 	g6." STA $220,X g@." INX (gJ." CPX #LAST-READ 9gT." BCC GENMVE Jg^." LDA #<$220 Ygh." STA $302 jgr." LDA #>$220 yg|." STA $303 g." JSR HEADER g." CLI g." JMP TURBO g." g."GENTAP: JSR WMESG2 g." JSR WMESG3 g." JSR WMESG4 g." JSR REPLY h." BCS GENTAP h." JSR EDDWN %h." JSR WRITE 5h." JMP TURBO ;h." Oh."GETHEX: LDA #0 \h/" STA T0 ih/" STA T1 h/"GETHEZ: JSR GETIN h&/" CMP #13 h0/" BEQ GETEX h:/" CMP #'0 hD/" BCC GETHEZ hN/" CMP #'F'+1 hX/" BCS GETHEZ hb/" CMP #'9'+1 il/" BCC GOTDIG iv/" CMP #'A' !i/" BCC GETHEZ 'i/" ?i/"GOTDIG: JSR CHROUT Ii/" PHA Vi/" LDX #3 ji/"DIGS:   ASL T0 wi/" ROL T1 i/" DEX i/" BPL DIGS i/" PLA i/" i/" SEC i/" SBC #48 i0" CMP #10 i0" BCC DIGSHF i0" SBC #7 i 0"DIGSHF: ORA T0 j*0" STA T0 j40" JMP GETHEZ 'j>0"GETEX:  RTS -jH0" AjR0"GETNAM: LDA #0 Nj\0" STA T0 ejf0"GETNIM: JSR GETIN sjp0" CMP #13 jz0" BEQ GETNEX j0" CMP #32 j0" BCC GETNIM j0" CMP #96 j0" BCS GETNIM j0" j0" JSR CHROUT j0" LDX T0 j0" STA NAME,X k0" INC T0 k0" LDA T0 k0" CMP #16 0k0" BCC GETNIM Ak0"GETNEX: RTS Gk0" [k0"REPLY:  LDX #0 uk1"REP1:   LDA CORREC,X k1" BEQ REP2 k1" JSR CHROUT k$1" INX k.1" BNE REP1 k81"REP2:   JSR GETIN kB1" CMP #'Y kL1" BEQ YES kV1" CMP #'N k`1" BNE REP2 lj1" SEC lt1" RTS #l~1"YES:    CLC -l1" RTS 3l1" Gl1"WMESG2: LDX #0 `l1"WM2:    LDA MESG2,X ol1" BEQ WM21 l1" JSR $FFD2 l1" INX l1" BNE WM2 l1"WM21:   JSR GETNAM l1" LDX T0 l1" STX FNLEN l1" BEQ WM22 l 2"WM23:   LDA NAME-1,X m
2" STA FNAM-1,X m2" DEX !m2" BNE WM23 2m(2"WM22:   RTS 8m22" Lm<2"WMESG3: LDX #0 emF2"WM3:    LDA MESG3,X tmP2" BEQ WM31 mZ2" JSR $FFD2 md2" INX mn2" BNE WM3 mx2"WM31:   JSR GETHEX m2" LDA T0 m2" STA FFIRST m2" LDA T1 m2" STA FFIRST+1 m2" RTS n2" n2"WMESG4: LDX #0 /n2"WM4:    LDA MESG4,X >n2" BEQ WM41 Nn2" JSR $FFD2 Xn2" INX fn2" BNE WM4 ~n2"WM41:   JSR GETHEX n3" LDA T0 n3" STA FLAST n3" LDA T1 n"3" STA FLAST+1 n,3" RTS n63" n@3"WMESG5: LDX #0 nJ3"WM5:    LDA MESG5,X oT3" BEQ WM51 o^3" JSR $FFD2  oh3" INX .or3" BNE WM5 Fo|3"WM51:   JSR GETHEX So3" LDA T0 co3" STA BEGIN po3" LDA T1 o3" STA BEGIN+1 o3" RTS o3" o3"WMESG1: LDX #0 o3"WM1:    LDA MESG1,X o3" BEQ WM11 o3" JSR $FFD2 o3" INX o3" BNE WM1 p3"WM11:   JSR GETNAM p4" LDX T0 +p4" STX HEADL :p4" BEQ WM12 Tp&4"WM13:   LDA NAME-1,X hp04" STA HEADN-1,X rp:4" DEX pD4" BNE WM13 pN4"WM12:   RTS pX4" pb4"HEADER: LDA #1 pl4" TAX pv4" TAY p4" JSR SETLFS p4" LDA HEADL p4" LDX #<HEADN q4" LDY #>HEADN q4" JSR SETNAM 'q4" LDA #<$220 4q4" STA T0 Eq4" LDA #>$220 Rq4" STA T1 `q4" LDA #T0 qq4" LDX #<$304 q4" LDY #>$304 q4" JMP SAVE q5" q5"HEADL: BYT 0 q5"HEADN: RES 16 q 5" q*5"WRITE:  PHP q45"        SEI q>5"        LDA $FF19 rH5"        PHA rR5" )r\5"        JSR PRECO @rf5"        STA RAMON Trp5"        LDA #2 irz5"        STA PIO or5" r5"        LDA #0 r5"        STA CHKSUM r5"        STA $FF19 r5"        LDA #4 r5"        JSR GAIT r5" r5"        LDX #16 s5"WSYNC:  LDA #SYNC &s5"        JSR WRITEB 7s5"        DEX Ns5"        BNE WSYNC Ts5" ks6"        LDA FNLEN s6"        JSR WRITEB s6"        LDA FNLEN s$6"        BEQ NONAME s.6" s86"        LDY #0 sB6"WNAME:  LDA FNAM,Y sL6"        JSR WRITEB tV6"        INY $t`6"        CPY FNLEN ;tj6"        BCC WNAME Htt6"NONAME: \t6"        LDX #3 vt6"WADDR:  LDA FFIRST,X t6"        JSR WRITEB t6"        DEX t6"        BPL WADDR t6" t6"        LDA CHKSUM t6"        JSR WRITEB t6" 
u6"        LDY FFIRST u6"        LDA #0 6u6"        STA FFIRST Ku 7"        STA TOP Qu
7" gu7"BLOCK:  JSR DELL u7"        LDA FFIRST+1 u(7"        CMP FLAST +1 u27"        PHP u<7"        BCC NOTYET uF7"        LDA FLAST uP7"        BEQ WDONE vZ7"        STA TOP vd7"NOTYET: 0vn7"        LDA (FFIRST),Y Hvx7"        JSR WRITEB Yv7"        INY nv7"        CPY TOP v7"        BNE NOTYET v7" v7"        LDA CHKSUM v7"        JSR WRITEB v7" v7"        INC FFIRST+1 v7"        PLP w7"        BNE BLOCK w7"        PHA w7" ,w7"WDONE:  PLA Bw8"        LDA #$88 Ww8"        STA PIO mw8"        STA LOCK w"8"        STA ROMON w,8" w68"        PLA w@8"        STA $FF19 wJ8"        PLP wT8"        RTS w^8" wh8"WRITEB: STA DATA xr8"        EOR CHKSUM  x|8"        STA CHKSUM 1x8"        TYA Bx8"        PHA Vx8"        LDY #8 mx8"WRT1:   INC $FF19 x8"        LDA #0 x8"        STA PIO x8"        JSR DELL x8"        ASL DATA x8"        BCC ZERO x8"        JSR DELL y8"ZERO:   LDA #2 y8"        STA PIO -y8"        JSR DELL >y9"        DEY Ty9"        BNE WRT1 ey9"        PLA vy&9"        TAY y09"        RTS y:9" yD9"GAIT:   STA CNT yN9"        LDX #0 yX9"        LDY #0 yb9"GAIT1:  DEY yl9"        BNE GAIT1 zv9"        DEX z9"        BNE GAIT1 /z9"        DEC CNT Fz9"        BNE GAIT1 Wz9"        RTS ]z9" wz9"DELL:SAVLOW:LDA #$60 z9"        STA TIM2 z9"SAVHIG: LDA #0 z9"        STA TIM2+1 z9"        LDA #16 z9"        STA TINT z:"DEL11:  BIT TINT {:"        BEQ DEL11 '{:"        STA TINT 8{ :"        RTS >{*:" g{4:"MESG: BYT 19,19,147,9,14,31,8,13,13 m{>:" {H:"BYT ' URBO.APE.ENU.....',13,13 {R:"BYT '  1) ENERATE HEADER',13 {\:"BYT '  2) URBO SAVE RAM',13 {]:"BYT '  3) ISK LOAD',13 |^:"BYT '  4) LTER CONSTANTS',13 8|a:"BYT '  E) DIT SCREEN',13 ^|f:"BYT '  M) XIT TO MONITOR',13,13 ||p:"BYT ' NTER OPTION : ',0 |z:" |:"MESG1: BYT 147,13,13 |:" |:"BYT ' NTER HEADER FILE NAME:',13,32,0 |:" |:"MESG2: BYT 147,13,13 |:" }:"BYT ' NTER TURBO FILE NAME:',13,32,0 %}:" ;}:"MESG3: BYT 13,13 A}:" j}:"BYT ' NTER START ADDRESS:',13,32,0 p}:" }:"MESG4: BYT 13,13 };" };"BYT ' NTER END ADDRESS:',13,32,0 };" }$;"MESG5: BYT 13,13 }.;" }8;"BYT ' NTER RUN ADDRESS:',13,32,0 %~B;"CORREC:BYT 13,13,' CORRECT? Y/N ',0 8~L;"NAME:  RES 16 >~V;" D~;" Q~ N"DISKLD: a~*N" JSR $FBD8 ~4N" BYT 147,13,' NTER DISK FILE NAME',13,13,' ',0 ~>N" JSR GETNAM ~HN" LDA T0 ~\N" BNE DISCON ~fN" RTS ~pN"DISCON: LDX #<NAME ~zN" LDY #>NAME 	N" JSR SETNAM N" LDA #8  N" TAX /N" LDY #255 @N" JSR SETLFS MN" LDA #0 ]N" JMP $FFD5 cN" s0u"OUTHEX:TXA ~:u" LSRA Du" LSRA Nu" LSRA Xu" LSRA bu" JSR OUTNIB lu" TXA vu" AND #15 u" JSR OUTNIB u" TYA u" LSRA u" LSRA u" LSRA u" LSRA  u" JSR OUTNIB *u" TYA 8u" AND #15 Eu"OUTNIB: Tu" ORA #$30 cu" CMP #$3A su" BCC OKNIB v" ADC #6 v"OKNIB: JSR $FFD2 v" RTS  v" @"CONSTT: JSR $FBD8 J" BYT147,13,'URRENT SAVE CONSTANT=',0 T" LDX SAVHIG+1 ^" LDY SAVLOW+1 h" JSR OUTHEX /r" JSR $FBD8 Z|" BYT 13,13,'URRENT LOAD CONSTANT=',0 m" LDX LODHIG+1 " LDY LODLOW+1 " JSR OUTHEX " JSR $FBD8 ā" BYT 13,13,13,'NTER SAVE>',0 Ձ" JSR GETHEX " LDA T0 ̜" ORA T1 ֜" BEQ TRY2 " LDY T1 " STY SAVHIG+1 +" LDX T0 >" STX SAVLOW+1 S"TRY2: JSR $FBD8 r"BYT 13,13,'NTER LOAD>',0 " JSR GETHEX &" LDA T0 0" ORA T1 :" BEQ TRY3 D" LDX T1 ƂN" LDY T0 قX" STX LODHIG+1 b" STY LODLOW+1 l"TRY3:RTS  v" j"EDITOR: JSR WEDMES /t"EDWA:   JSR GETIN =~" CMP #13 L" BNE EDWA R" _" LDA #9 p" JSR CHROUT ~" LDA #19 " JSR CHROUT " JSR EDDWN " JSR $D965 " JSR EDUP ȃ" RTS ΃" "EDUP: LDA #0  " STA T0 
" STA T2 " LDA #8 " STA T1 #(" LDA #$48 02" STA T3 =<" LDY #0 JF" LDX #8 PP" fZ"EDU1: LDA (T0),Y wd" STA (T2),Y n" INY x" BNE EDU1 " INC T1 " INC T3 " DEX Ä" BNE EDU1 ̈́" RTS ӄ" 愾"EDDWN: LDA #0 " STA T0  " STA T2 " LDA #$08 " STA T1 +" LDA #$48 8" STA T3 E" LDX #8 R" LDY #0 X" o""EDD1:  LDA (T2),Y ," STA (T0),Y 6" INY @" BNE EDD1 J" INC T1 T" INC T3 ^" DEX ̅h" BNE EDD1 օr" RTS ܅|" "EDCLR: LDA #0 " STA T0 " LDA #$48 " STA T1 %" LDY #0 2" LDX #8 @" LDA #32 F" ]"EDC1:  STA (T0),Y g" INY v" BNE EDC1 " INC T1 " DEX " BNE EDC1 " RTS " &" ˆ0"WEDMES: LDA #<EDMES ܆:" STA WED1+1 D" LDA #>EDMES N" STA WED1+2 X" b"WED1:   LDA $FFFF +l" BEQ WED2 ;v" JSR $FFD2 L" INC WED1+1 [" BNE WED1 l" INC WED1+2 {" BNE WED1 "WED2:   RTS " " "EDMES: BYT 147,13,13 " "BYT 'SE CURSOR KEYS TO MOVE AROUND SCREEN.',13 ""BYT 'RESSING A KEY STORES ITS CODE AT THAT',13 T"BYT 'POSITION. HANGE COLOURS THE NORMAL',13 "BYT 'MANNER. ETURN WILL EXIT EDIT MODE.',13,13 "BYT 'HEN TURBO SAVING, THE EDIT SCREEN IS',13 "BYT 'DOWNLOADED. O SAVE USE START ADDRESS',13 '"BYT 'OF 800. . EEP / PRESSED AFTER',13 T "BYT 'GENERATING THE HEADER FILE.',13,13 {*"BYT 'RESS RETURN TO CONTINUE.',0 4"*T   