@L|}6CD l0C)HCC WhL/h `CmCDiD`  R@W1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD` D  C D     )16CS S)  C)D1 p p }0 C9DI pCDL~CiCDiD` DD˙` d J)L !}D L(( LL()  L| L( S LH 0p n  } CY?  q  L L  ` )} `A! d߰")-݆ "  $G@LLL&0") $G% }H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0 })8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH) }  hyhyB q L> Lm JJ  Ln*` dB%' }8  H H` 1 { LL   !L     Hh SY?  q  1L }  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF } G) *Gȩ GȽG GȌd q q G`  8   0G  `D}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR}1LJ舩9GIH`LJJ`HGHh l`} S gL   8 rii `дCDCG W  }C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}} } HE |||DDOS DOSDOS SYS }}}}CDOS SYSB*+DUP SYSUW14 ASMCW141 652CW14 cW14 b sAUTORUN SYSbv|BASCOMP} OBJ 0`BDELV !B }`LVUQ   ]   TU J ]L!T  #      TU  } L ? .  t`GBJ V~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI   0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -'}LLu DEHILV 9 .l 9 .l  `` s$B VBH(}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVL)}1u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2e*}1i1232435ޥ<<8} 3E:}DISK OPERATING SYSTEM II VERSION 2.0SCOPYRIGHT 1980 ATARIA. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDGE J. D,}UPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRESSF. LOCK F-}ILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES9!&x#!7&p))'&X*./)L''-؆莟.}R'S  vW DEHHI 1A#! @ ~0ɛ8A0.) ȅ 1 1i/}il ! 1L NO SUCH ITEMSELECT ITEM OR FOR MENU! 0 .{z:*{}.|~ 1 0 00}JB 18L^%|DLl%DIRECTORY--SEARCH SPEC,LIST FILE? # 0 0 n&|D! 1L NOT A DISK FILE1}N !B 1L " 1 !BDED:}:1BJ|DE 1DEBH2}I 1 h0ߢ 0.  0?詛 1 ~0YЛ 1 "L<" "L 3} BL1TYPE "Y" TO DELETE...DELETE FILE SPECCOPY--FROM, TO?OPTION NOT ALLOWED COPYING---DN:4}# 0|D .L$A#B#C#JB|DE 1BHIDD#E 1D#0: B5} 1L B#C#C#B# B 1N#$0SYS1}:e#D# d# D# .d#ȽD# d# 𩛙d#X# 1,A#6}PdD#ELO- A.BJdD#E 1 1HH 0hh|DL^%1}:e# Lt% e#dD#EL%7} 1 0 . .0% 1L WILD CARDS NOT ALLOWED IN DESTINATION 0 A.|K@C}//3Hu ξL/L DRIVE TO WRITE DOS FILES TO?WRITING NEW DOS FILESTYPE "Y" TO WRITE DOS TO DRIVE 1.?}D1:DOS.SYSERROR - NOT VERSION 2 FORMAT. , &* բ( 1L `[) 0NΞ 0 L1M) 1@} L BAD LOAD FILELOAD FROM WHAT FILE?) 0 0#B 1L WHAT FILE TO LOCK?) 0 0$B 1L WHAT FILE TO UNLOCK?DUA}P DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO USE PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV. h  ,B}  `)  <0 2 2 0  ,   ,,ޢ* 1L ,K* 1 ~0 0C}FINSERT BOTH DISKS, TYPE RETURNERROR - DRIVES INCOMPATIBLE., 1 ~038  , 1L D}, &*  Lz+, 0 , 1 ~0 + Y,0!,0 ,L+ ,mm  v,"ǭE}0Ξ, 05,Lt+L +,Hh` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNF}INSERT DESTINATION DISK,TYPE RETURN`    `L,8,0( rG}L1(`ߢ) 1* 1 ~0Y`hhL S SL1) 8`NAME OF FILE TO MOVE?- 0 0|DLtH}% A., 1 <0 0 .@L# .BJ 1  DEHIB V L1 ,5 1 <0,L. I} JB|,A#Pd#DE 1 HI BDEHHII 1 B 1 , 1 <0,0Lf- B VJ},A#P, 1 <0 0L#L ߢ) 1* 1 ~0Yj383}mm ݭK}}`8}``|* ? ɛ,`|:(|/ 1L `DESTINATION CANT L}BE DOS.SYS0 0H{ $22Δ $28/L /) $2 Π $2 0 ξM}hAΞB,0 J 1 BޝDEHI,HDE 1HIHIDELSAVE-N}GIVE FILE,START,END(,INIT,RUN)O X0 1`BDEPHI V` X0H 1 L O}0 0 1L0`PLEASE TYPE 1 LETTER,0`hhL <0 1L0LA1 ,;ɛ7,"ɛ:ݦ1ݥP}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{Q}NAME TOO LONG B VL ` L1I H1EӝDL1|mDiE` V0`8d/8 i:"2!22 1R} L ERROR- 128ɛ+,' 20*.. өw2 1``2TOO MANY DIGITSINVALIDS} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4uT} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4u20 .TITLE The Atari Wedge 1.13 by C.Buerger Atari User Group Koeln /W13.ASM30 .OPT NOLIST40 *=$1F00V}50 ICCOM =$034260 ICBADR =$34470 ICBLEN =$034880 ICAUX1 =$034A90 COPN =$030100 CPTXTR =$090110 CGTXTR W} =$050120 CPBINR =$0B0130 CCLOSE =$0C0140 CIO =$E4560150 OPDIR =$060160 HATABS =$031A0170 LBUFF =$0580X}0180 LENGTH =$CB0190 MEMLO =$02E70200 PARMS =$CC0210 COM =$CD0220 DOSINIT =$0C0230 SETVBI =$E45C0240 XY}ITVBI =$E4620250 IMMVBI =$E45F0260 PUTLIN =$F3850270 ENTRY PLA ;FOR BASIC INIT0280 INIT LDA DOSINIT0290 STAZ} REINIT+10300 LDA DOSINIT+10310 STA REINIT+20320 INIT2 LDA #REINIT&2550330 STA DOSINIT0340 LDA #[}REINIT/2560350 STA DOSINIT+10360 JSR MSG ;PRINT MESSAGE0370 LDX #GENVBI/256 ;General0380 LDY #GENVBI&25\}5 ;VBI-control0390 LDA #7 ;deffered0400 JSR SETVBI0410 JSR ECHANGE ;hookup new E:0420 LDA #ENDWED]}GE&255 ;Bump up0430 STA MEMLO0440 LDA #ENDWEDGE/256 ;low memory pointer0450 STA MEMLO+10460 RTS0^}470 REINIT0480 JSR XXXX ;are0490 JSR INIT2 ;changed in0500 XXXX RTS ;INIT0510 MSG LDA #WMSG&255 ;Store adr_}ess of0520 STA ICBADR ;message0530 LDA #WMSG/2560540 STA ICBADR+10550 LDA #00560 STA ICBLE`}N+1 ;set lenght0570 LDA #370580 STA ICBLEN0590 LDA #CPBINR ;Ignore carriage-returns0600 STA ICCOMa}0610 LDX #0 ;File O.the editor0620 JSR CIO ;Call CIO to print it0630 TYA0640 BMI ERR ;if no errorb} return0650 RTS0660 ERR JMP ERROR0670 ;0680 WMSG .BYTE " C.Buerger Atari User Group Koeln ",$9B0690 ;Followic}ng replaces the old E:0700 ECHANGE LDY #0 ;Search for E:0710 ELOOP LDA HATABS,Y ;in handler table0720 CMP #'E.0730 d} BEQ EFOUND ;Found end?0740 INY0750 INY0760 CPY #34 ;end of table0770 BNE ELOOP0780 Re}TS ;return0790 ;Store new handler table adress0800 EFOUND INY0810 LDA #WEDGETAB&2550820 STA HATABS,Y0830 f} INY0840 LDA #WEDGETAB/2560850 STA HATABS,Y0860 ;Transfer Editor table to wedge table0870 LDX #00880g} XFER LDA $E400,X0890 STA WEDGETAB,X0900 INX0910 CPX #160920 BNE XFER0930 ;Patch in MYINPUT rouh}tine0940 LDA #MYINPUT-1&2550950 STA WEDGETAB+40960 LDA #MYINPUT-1/2560970 STA WEDGETAB+50980 i} CLC0990 LDA $E404 ;Get character adress1000 ADC #1 ;Actual adress is +11010 STA MYINPUT+1 ;Egads1020j} LDA $E405 ;Self-modifying code!1030 ADC #0 ;(Accept any carry)1040 STA MYINPUT+21050 LDA #01060 k} STA LENGTH ;Clear length initially1070 RTS1080 ;Wedge handler address table1090 WEDGETAB *=*+161100 YSAVE *=*l}+1 ;Used to save Y register1110 XSAVE *=*+11120 JUMPADR *=*+2 ;used for indirect jmp1130 MYINPUT1140 ;The $F63E address im}s actually placed here obove code1150 ;to permit this routine to run on the REVISION B OS1160 ;(where it woudn't be $F63E)n}1170 JSR $F63E ;Get a character from E:1180 PHP1190 CMP #155 ;End of line? (CR)1200 BEQ ENDLINE ;Yo}es,complete line ready1210 INC LENGTH1220 PLP1230 RTS ;No,let CIO have the character1240 ENDLINE1250 p} STY YSAVE1260 STX XSAVE1270 LDA LENGTH1280 BEQ RETURN.LINE1290 LOOKUP1300 LDA #COMTBL&255 ;q}Set up indirect pointer for1310 STA COM1320 LDA #COMTBL/256 ;command table1330 STA COM+11340 NEXTCOM LDr}Y #01350 COMPLOOP1360 LDA (COM),Y ;Compare command against line buffer1370 CMP LBUFF,Y ;okay so far?1380 s} BNE NOTSAME ;no match1390 INY1400 LDA (COM),Y ;is next charcter null?1410 BEQ COMFOUND ;yesy,command ft}ound1420 CPY LENGTH ;exceeded limits?1430 BNE COMPLOOP ;If not,continue comparision1440 JMP RETURN.LINE u};give line to language1450 NOTSAME CMP #255 ;end of table?1460 BEQ RETURN.LINE1470 LDY #0 ;No,skip over commanv}d1480 FINDED LDA (COM),Y1490 BEQ ENDCOM ;Hit the zero yet?1500 INC COM ;No,next character1510 BCC NOINCw}11520 INC COM+11530 NOINC1 JMP FINDED ;continue until null byte found1540 ENDCOM CLC ;Add 3 to skip over null byte1x}550 LDA COM ;and JMP adress1560 ADC #31570 STA COM1580 BCC NOINC2 ;Check for carry1590 INC y}COM+11600 NOINC2 JMP NEXTCOM1610 COMFOUND1620 INY1630 STY PARMS ;Y is index into parameters1640 LDA (Cz}OM),Y ;Load JUMADR with command adress1650 STA JUMPADR1660 INY1670 LDA (COM),Y1680 STA JUMPADR+1{}1690 JMP(JUMPADR) ;Execute !1700 EXIT LDY #0 ;Commands return here1710 LDA #'. ;Change first character to1720|} STA LBUFF,Y ;".", or 1730 ;ALLOWS BASIC TO ignore line1740 RETURN.LINE1750 LDA #01760 STA LENGTH1770}} LDY YSAVE ;Restore Y1780 LDX XSAVE ;and X PLP1790 LDA #1551800 PLP ;and processor status1810 ~} RTS ;THAT'S IT1820 COMTBL1830 ;WEDGE COMMANDS AND COMMAND TABLE1840 ;format is:1850 ;.BYTE "COMMAND",01860 ;.WORD CO}MMAND.ADRESS1870 ;END OF TABLE IS1880 ;.BYTE 2551890 .BYTE "DIR",01900 .WORD DIR1910 .BYTE "SCRATCH",0}1920 .WORD SCRATCH1930 .BYTE "LOCK",01940 .WORD LOCK1950 .BYTE "UNLOCK",01960 .WORD UNLOCK}1970 .BYTE "RENAME",01980 .WORD RENAME1990 .BYTE "KILL",02000 .WORD KILL2010 .BYTE "FLASH"},02020 .WORD FLASH2030 .BYTE "QUICK",02040 .WORD QUICK2050 .BYTE "INFO",02060 .WORD INFO2}070 .BYTE "SLOW",02080 .WORD SLOW2090 .BYTE "VAR",02100 .WORD VAR2110 .BYTE "L.",02120 } .WORD LIST2130 .BYTE 2552140 DIRBUF *=*+202150 DIRNAME .BYTE "D:*.*"2160 ;2170 ;Start of commands2180 ;2190 }DIR2200 LDX #$50 ;IOCB #52210 LDA #CCLOSE2220 STA ICCOM,X2230 JSR CIO ;CLOSE#52240 ;OPEN#5,6,0,"}D:*.*"2250 LDX #$50 ;Channel2260 LDA #COPN ;Open command2270 STA ICCOM,X2280 LDA #OPDIR ;Special }directory command2290 STA ICAUX1,X2300 LDA #DIRNAME&255 ;filename(wildcard)2310 STA ICBADR,X2320 }LDA #DIRNAME/2562330 STA ICBADR+1,X2340 JSR CIO ;set it up!2350 TYA2360 BPL NOERR12370 JMP} ERROR2380 ;Print a line to the editor2390 NOERR12400 NEXT LDX #$50 ;#52410 LDA #CGTXTR ;Get a line2420 STA} ICCOM,X2430 LDA #DIRBUF&255 ;put it into the buffer2440 STA ICBADR,X2450 STA ICBADR2460 LDA #DIR}BUF/2562470 STA ICBADR+1,X2480 STA ICBADR+12490 LDA #20 ;Maximum length is 202500 STA ICBLEN,X ;(}actually 17)2510 STA ICBLEN2520 JSR CIO2530 TYA ;Check for end of file2540 BMI ENDIR ;On error,fi}nished directory2550 NOERR2 LDA #CPTXTR ;Put the record(print a line)2560 STA ICCOM2570 LDX #0 ;Channel 1 is o}pen to the editor2580 JSR CIO2590 JMP NEXT2600 ENDIR LDX #$50 ;Close #52610 LDA #CCLOSE2620 STA }ICCOM,X2630 JSR CIO2640 JMP EXIT2650 ;End of directory routine2660 ;Following routine is used by lock2670 ;U}NLOCK SRATCH, AND RENAME2680 ;FILENAME BUFFER IS IN LBUFF2690 ;e.g. LOCK D:TEMP2700 ;this ^portion is used2710 ;to tell C}IO the filename2720 CALLCIO2730 LDX #$50 ;Use file 5(XIO n,#5,etc.)2740 STA ICCOM,X ;Store command2750 }LDA #0 ;Clear MSB2760 STA ICBLEN+1,X ;of length2770 LDY LENGTH2780 STA LBUFF,Y2790 SEC ;Get lengt}h2800 TYA ;of filename2810 SBC PARMS ;(skip over command name)2820 STA ICBLEN,X2830 CLC2840 } LDA #LBUFF&2552850 ADC PARMS2860 STA ICBADR,X2870 LDA #LBUFF/2562880 ADC #02890 STA ICBA}DR+1,X2900 JSR CIO2910 TYA2920 BPL NOERR32930 JMP ERROR2940 NOERR3 JMP EXIT2950 SCRATCH LDA #33}2960 JMP CALLCIO2970 LOCK LDA #352980 JMP CALLCIO2990 UNLOCK LDA #363000 JMP CALLCIO3010 RE}NAME LDA #323020 JMP CALLCIO3030 ;Remove Wedge3040 KILL LDA REINIT+13050 STA DOSINIT3060 LDA REI}NIT+23070 STA DOSINIT+13080 JMP $E474 ;"PRESS" SYSTEM RESET3090 ;END OF CURRENT WEDGE3100 ERROR PHA3110 } LDX #$503120 LDA #CCLOSE3130 STA ICCOM,X3140 JSR CIO3150 PLA3160 LDX #$FF ;reset stack3}170 TXS3180 STA $B9 ;tell BASIC error code3190 JMP $B940 ;call the ERROR routine3200 ;in the Basic catri}dge3210 .TITLE VBI-CONTROLLER 1.0 by C.Buerger3220 ;3230 GENVBI3240 PHP ;This is the VBI32}50 PHA ;Control Routine3260 LDA COUNT3270 CMP #6 ; OF VBI'S*2 here3280 BNE JUMPY3290 LDA #03300 S}TA COUNT3310 JUMPY3320 TAY3330 LDA SWITCH,Y3340 CMP #1 ;no subroutine like3350 BNE TOGENVBI ;QUICK,INFO3360} LDA SWITCH+1,Y3370 TAX3380 LDA VBIADR,X ;adress to3390 STA JMPSUB ;jump from3400 LDA VBIADR+1,X ;GENVBI3}410 STA JMPSUB+1 ;to SUBVBI3420 JMP (JMPSUB) ;like FLASh,INFO3430 TOGENVBI3440 INC COUNT ;Return from3450 INC} COUNT ;Subroutine here3460 PLA ;Reset every stuff3470 PLP3480 JMP XITVBI3490 ;ADRESS AND SWITCHTABLE3500 JMPSU}B .BYTE0,0 ;for indirect JMP3510 COUNT .BYTE 0 ;which VBI is on?3520 SWITCH .BYTE 0,0 ;1st=on/off3530 .BYTE 0,2 ;2}ndJMPSUB=3540 .BYTE 0,4 ;=VBIADR,2nd3550 .BYTE 0,63560 .BYTE 0,83570 VBIADR .WORD FLASHVBI3580 } .WORD INFOVBI3590 .WORD SLOWVBI3600 SWITCHONOFF3610 LDA SWITCH,X ;switch the VBI's3620 EOR #13630 STA SWIT}CH,X3640 JMP EXIT3650 .TITLE FLASH 1.2 by C.Buerger3660 ;3670 FLASH LDX #03680 LDA #2}3690 STA 7553700 JMP SWITCHONOFF3710 FLASHVBI3720 LDA $143730 AND #$103740 LSR A3750 } LSR A3760 LSR A3770 STA 7553780 JMP TOGENVBI3790 .TITLE "QUICKTYPER 2.0 -- copyright 1982 Synapse s}oftware"3800 ;3810 CH=$2FC ;Keycode register3820 KBCODE=$D209 ;Hardware keypress reg3830 SHFCTRL=}$C0 ;SHIFT+CONTROL3840 VKEYBD=$208 ;O.S. Keypress vector3850 ONOFF .BYTE 03860 QUIOFF3870 LDX #$E7 ;switch QUICKTYPER38}80 LDY #$D13890 LDA #$63900 JSR SETVBI3910 JMP EXIT3920 QUICK3930 LDA ONOFF3940 EOR #13950 STA ONOFF3960 CMP }#0 ;OFF3970 BEQ QUIOFF3980 LDX #QUICKVBI/2563990 LDY #QUICKVBI&2554000 LDA #6 ;immediate4010 JSR SETVBI4020 SEI ;}Don't bug me while I'm switchin' vectors4030 LDA VKEYBD ;Copy current keyboard4040 STA KEYRTN+1 ;vector to my storage405}0 LDA VKEYBD+1 ;place so i can use4060 STA KEYRTN+2 ;it, too.4070 LDA #STARTER&255 ;Now intercept4080 STA VKEYBD ;all }keypresses by4090 LDA #STARTER/256 ;stealing key-4100 STA VKEYBD+1 ;board vector.4110 CLI ;Bug me now, I'm done.4120 J}MPEXIT1 JMP EXIT4130 STARTER TXA ;Save X-Reg4140 PHA4150 LDA KBCODE ;This keypress4160 CMP #SHFCTRL ;Both SHFT & CTRL }down?4170 BCC EXIT1 ;Nope, not interested4180 LDA KBCODE4190 LDX #LEN-1 ;Point to end of table4200 QUILOOP CMP TABLE,X} ;Have I found what he typed?4210 BEQ GETIT ;Yes.. Prepare to type4220 DEX ;No, continue loop4230 CPX #$FF ;Is table fi}nished?4240 BNE QUILOOP ;No siree.. check next item4250 ;Keypress not valid....4260 EXIT1 PLA ;Restore X-Reg4270 TAX42}80 KEYRTN JMP KEYRTN ;Let system do keypress4290 GETIT INX ;Point to start of letters4300 STX POS ;Record that for later4}310 LDA DELAY ;Setup first delay4320 STA INPROG ;for typing4330 JMP EXIT14340 QUICKVBI LDA CH ;Keypress buffer4350 CM}P #$FF ;empty?4360 BNE EXIT2 ;No, dont type over it4370 LDA INPROG ;Am I busy typing?4380 BMI EXIT2 ;Hardly.. go home4}390 BEQ NODELAY ;Yes.. go type4400 DEC INPROG ;Am typing, but not ready4410 JMP EXIT2 ;for next char4420 NODELAY LDX PO}S ;Find letter to type4430 LDA TABLE,X4440 BMI DONE ;High bit on, done typing4450 STA CH ;Type letter4460 INC POS ;Ne}xt letter4470 LDA DELAY ;Delay next keypress4480 STA INPROG ;so OS can catch up4490 EXIT2 JMP IMMVBI ;exit immediate VBI}4500 DONE DEC INPROG ;Show typing done4510 BNE EXIT2 ;by making delay < 04520 INPROG .BYTE 04530 POS .BYTE 04540 DELAY }.BYTE 1 ;Keypress delay4550 TABLE .BYTE 204,$0C,$27,$7C ;<>=/|\A-a4560 .BYTE 246,$7D,$68,$22,$32,$C ;Ү<>}=4570 .BYTE 202,$0A,$08,$3E,$0D,$2D,$D,$08,$23 ;=Л4580 .BYTE 254,$7E,$2D,$0D,$12,$05,$70 ;˨=ӛ4590 .BYTE 2}23,$12,0,8,$3F,$3A,$C ;<>=4600 .BYTE 222,$12,$3E,$3F,$10,$2A,$C ;<>=4610 .BYTE 218,$2A,$23,$2D,$2A,$28,}$5E,$12,$42,$5E ;Ңú=4620 .BYTE 216,$0,$0D,$3E,$2D,$5E,$12,$42,$5E ;Ԣú=4630 .BYTE 221,$08,$0A,$2A,$23,$5A,$}1F,$20,$18,$20,$32,$20,$5E ;Σ=4640 .BYTE 239,$12,$0,$8,$3E,$2A,$5A ;ţ=ћ4650 .BYTE 243,$3F,$3E,$12,$70 ;}è=4660 .BYTE 253,$3D,$31,$28,$3F,$0A,$39,$0D,$12,$3E ;=Ǜ4670 .BYTE 235,$0A,$0,$08,$2D ;=Л4680 .BYTE 245,}$12,$39,$28,$58,$70 ;Ҥ4690 .BYTE 200,$7E,$48,$4B,$63,$7A ;=ϛ4700 .BYTE 238,$38,$08,$28,$21,$0D,$0F ;Ҡɽ=כ471}0 .BYTE 226,$6A,$63,$7A,$C ;<>=4720 .BYTE 203,$3D,$08,$3E,$0B,$15,$21 ;=՛4730 .BYTE 205,$28,$2A,$2D,$0B,$28,}$23 ;=ɛ4740 .BYTE 227,$0,$8,$12,$3F,$2D,$2A,$21 ;=Λ4750 .BYTE 225,$68,$6A,$65,$61 ;=<>4760 .BYTE 20}7,$4A,$48,$45,$6A,$21 ;=4770 .BYTE 206,$4A,$6A,$6A,$45,$70 ;˨=4780 .BYTE 237,$40,$4D,$7E,$6D,$C ;<Ծ4790} .BYTE 232,$68,$4B,$63,$0C ;<>=ԛ4800 .BYTE 234,$3E,$2A,$2D,$12,$08,0,$08,$28 ;=ś4810 .BYTE 219,$66,$5A,$1B},$02 ;=4820 .BYTE 250,$3A,$28,$3F,$2E,$2D,$08 ;=ě4830 .BYTE 231,$3A,$3F,$2D,$3F,$21 ;<>=ܛ4840 .BY}TE 252,$66,$38,$28,$2A,$70,$16,$72,$0C ;Ũ<>=lowr4850 .BYTE 128 ;END OF TABLE4860 LEN=*-TABLE4870 .TITLE "SLOWLI}ST -- listing controller" (c) 1982 Synapse Software4880 ;=============================4890 CONSOL=$D01F ;hardware console b}uttons4900 SSFLAG=$2FF ;screen start/stop flag4910 SLOW LDX #4 ;In SWITCH,44920 JMP SWITCHONOFF4930 SLOWVBI LDA #$02} ;Deferred VBLANK vectors to here4940 BIT CONSOL ;check for [SELECT]4950 BNE NOSELECT4960 LDA CNTR ;[SELECT] is pushed}4970 BEQ RESET ;IS THE COUNTER = 04980 DEC CNTR ;NO --- decrement it by one4990 LDA #$01 ;make sure SSFLAG is set5000 }STA SSFLAG5010 JMP RETURN5020 RESET LDA SPEED5030 STA CNTR5040 LDA #$00 ;no pduse this VBLANK5050 STA SSFLAG5060 J}MP RETURN5070 NOSELECT LDA #$01 ;check for [START]5080 AND CONSOL5090 EOR #$01 ;flip the [START] bit5100 STA SSFLAG ;s}et SSFLAG accordingly5110 JMP RETURN5120 CNTR .BYTE 05130 SPEED .BYTE 4 ;initial delay5140 VAR5150 LDA $825160} STA $E05170 LDA $835180 STA $E15190 LDA $845200 SBC $825210 BEQ OUT522}0 LDY #05230 VLOOP JMP OUT5240 OKAY LDA ($E0),Y5250 CMP #$805260 BCS VEND ;>=5270 J}SR $F6A45280 GOON LDY #05290 CLC5300 LDA $E05310 ADC #15320 STA $E05330 LDA }$E15340 ADC #05350 STA $E15360 JMP VLOOP5370 OUT LDA $855380 CMP $E15390 BN}E OKAY5400 LDA $845410 CMP $E05420 BNE OKAY5430 JMP EXIT5440 VEND SBC #$805450 } JSR $F6A45460 LDA #',5470 JSR $F6A45480 JMP GOON5490 .TITLE "INFORMER II -- Internal status l}ine"--Copyright 1982 Synapse software5500 ;5510 SDLST=$230 ;Vector to display list5520 ROWCUR=$54 ;C}ursor row5530 COLCUR=$55 ;Cursor column5540 SHFLOK=$2BE ;CAPS/LOWR status5550 INVFLG=$2B6 ;Inverse video flag5560 MEMTOP=}$90 ;BASIC low memory addr5570 HIMEM=$2E5 ;System high mem addr5580 INFO LDX #2 ;In SWITCH,2 is stored5590 JMP SWITCHONOF}F5600 INFOVBI LDA SDLST+1 ;If Hi byte of DLIST vector5610 CMP #DSPLST/256 ;is the same as hi byte of mine,5620 BEQ MAKEL}N ;then DLIST is still setup5630 ;Setup new DISPLAY-LIST header5640 LDA SDLST ;Set DLIST jump instruction5650 CLC ;to ju}mp to current-DLIST+35660 ADC #3 ;to avoid BLANK-8-LINES5670 STA JMPADR ;instructions.5680 LDA SDLST+15690 ADC #0570}0 STA JMPADR+15710 LDA #DSPLST&255 ;Reset DLIST vector5720 STA SDLST ;to point to my header5730 LDA #DSPLST/2565740 }STA SDLST+15750 ;Create the informer line5760 MAKELN LDA ROWCUR ;Print cursor row5770 LDY #RSPOT-MESSAGE ;(position in st}atus line)5780 JSR CONVRT5790 LDA COLCUR ;Print column5800 LDY #CSPOT-MESSAGE5810 JSR CONVRT5820 ;Find the CAPS/LOWR} and INVERSE5830 ;modes.5840 LDA SHFLOK ;Get CAPS/LOWR status5850 CLC ;Convert it into an index5860 ROL A ;between 0 a}nd 25870 ROL A ;by exploiting a5880 ROL A ;cute trick.5890 TAX5900 LDA SHFTBL,X ;Get visual representation5910 ORA }INVFLG ;Include INVERSE, too5920 EOR #$80 ;Toggle inverse (line is already inverse)5930 STA LSPOT5940 ;put free ram on s}creen5950 SEC5960 LDA HIMEM ;subtract MEMTOP from HIMEM5970 SBC MEMTOP5980 TAY ;save it in Y5990 LDA HIMEM+16000 }SBC MEMTOP+16010 LDX #$006020 LOOP PHA ;save it for later6030 LSR A ;SHIFT HIGH NIBBLE DOWN6040 LSR A6050 LSR A6060} LSR A6070 JSR CB2AH ;convert binary to ATASCII hex6080 STA FRESPOT,X ;and output it to the screen6090 INX6100 PLA6}110 AND #$0F ;mask out high nibble6120 JSR CB2AH6130 STA FRESPOT,X6140 INX6150 CPX #$046160 BEQ RETURN6170 TYA6}180 JMP LOOP6190 RETURN JMP TOGENVBI ;go home to pappa6200 CB2AH CMP #$0A ;Digit between 0 and 9?6210 BCC NUMBER ;YES!!!}6220 CLC6230 ADC #$97 ;Make it A-F6240 RTS6250 NUMBER ORA #$90 ;Make it 0-96260 RTS6270 JMP RETURN ;END6280 CONVR}T LDX #4 ;Up to 4x10 values6290 LOOP2 CMP MAXTBL,X ;Is this <= to value?6300 BCS FOUND ;Yes6310 DEX ;No, next check6320} BNE LOOP26330 FOUND SEC6340 SBC MAXTBL,X ;Pull off tens6350 ORA #$90 ;Make digit printable6360 STA MESSAGE+1,Y6370 } LDA CHRTBL,X ;Print tens digit6380 STA MESSAGE,Y6390 RTS6400 DSPLST .BYTE $70,$60,$10,$42 ;Prints INFORMER line6410 .}WORD MESSAGE6420 .BYTE $01 ;Jump back to old DLIST6430 JMPADR .WORD 06440 ;6450 SHFTBL .BYTE $61,$21,$40 ;"A","a",""64}60 MAXTBL .BYTE 0,10,20,30,40 ;Tens table6470 CHRTBL .BYTE $90,$91,$92,$93,$94 ;Printable tens6480 MESSAGE .BYTE $80,$A9,$E}E,$E6,$EF6490 .BYTE $F2,$ED,$E5,$F2,$80,$D66500 .BYTE $AD,$EF,$E4,$E5,$9A,$806510 LSPOT .BYTE 0 ;Mode6520 .BYTE $80,$D}6,$B2,$806530 RSPOT .BYTE 0,0 ;Row6540 .BYTE $80,$80,$A3,$806550 CSPOT .BYTE 0,0 ;Column6560 .BYTE $C2,$80,$A6,$80,$84}6570 FRESPOT .BYTE 0,0,0,06580 .BYTE $806600 LIST LDX #06620 LOOKY LDA LBUFF+2,X6630 CMP #'- ;search for "-}"6640 BEQ WORK ;X=0123456650 CPX #$5 ;L.-320006660 BEQ STUFFBACK ;L.32000-6670 CMP $9B ;end o}f edited6680 BEQ STUFFBACK6690 INX6700 JMP LOOKY6710 STUFFBACK JMP EXIT6720 WORK CPX #0 ;ask }if LBUFF,26730 BEQ UNTIL ;="-"6740 FROM STX XRAM ;save X-reg6750 WRITEBUF DEX ;̮6780 LDA LBUFF+2,X} ;L.??6790 STA LISTBUF0+4,X ;write6791 CPX #06792 BEQ NEWBUF06800 JMP WRITEBUF ;LISTBUF0}6810 XRAM .BYTE 06820 NEWBUF0 LDX XRAM6830 ALTER0 CPX #5 ;fill rest behind6840 BEQ NEWBUF ;VALUE with6850 } LDA #$20 ;BLANKS6860 STA LISTBUF0+4,X6870 INX6880 JMP ALTER06890 LISTBUF0 .BYTE "LIST ,}32768"6900 .BYTE $9B ;end for 'E:6920 NEWBUF LDX #06930 ALTER LDA LISTBUF0,X6940 STA LBUFF,X6950 } CPX #15 ;end of LBUFF6960 BEQ LISTEND6961 STX XRAM6962 JSR $F6A46963 LDX XRAM6970 } INX6990 JMP ALTER7000 LISTEND JMP RETURN.LINE7065 LISTBUF1 .BYTE"LIST0, ",$9B7070 UNTIL LDA LBUFF+3,X };̮7120 CPX #5 ;Write this value7130 BEQ NEWWRITE0 ;in LISTBUF17140 STA LISTBUF1+6,X7150 }INX7160 JMP UNTIL7170 NEWWRITE0 LDX #07180 ALTER1 LDA LISTBUF1,X ;write7190 STA LBUFF,X ;LISTBUF1,X7195 } INX ;in LBUFF,X7200 CPX #12 ;end of LISTBUF17210 BNE ALTER17220 JMP LISTEND9070 ENDWEDGE9080 } *=$2E09090 .WORD INIT9100 .ENDi User Group Koeln /W13.ASM30 .OPT NOLIST40 *=$1F008 *=$2E09090 .WORD INIT9100 .ENDi User Group Koeln /W13.ASM30 .OPT NOLIST40 *=$1F00 .TITLE The Atari Wedge 1.13 by C.Buerger Atari User Group Koeln /W13.ASM .OPT NOLIST *=$1F00COM =$0342}BADR =$344BLEN =$0348AUX1 =$034APN =$03CPTXTR =$09CGTXTR =$05CPBINR =$0BCCLOSE =$0CCIO =$E456}OPDIR =$06HATABS =$031ALBUFF =$0580LENGTH =$CBMEMLO =$02E7PARMS =$CCCOM =$CDDOSINIT =$0CSETVBI } =$E45CXITVBI =$E462IMMVBI =$E45FPUTLIN =$F385ENTRY PLA INIT LDA DOSINIT STA REINIT+1 LDA DOSINIT+1} STA REINIT+2INIT2 LDA #REINIT&255 STA DOSINIT LDA #REINIT/256 STA DOSINIT+1 JSR MSG LDX #G}ENVBI/256 LDY #GENVBI&255 LDA #7 JSR SETVBI JSR ECHANGE LDA #ENDWEDGE&255 STA MEMLO } LDA #ENDWEDGE/256 STA MEMLO+1 RTSREINIT JSR XXXX JSR INIT2 XXXX RTS MSG LDA #WMSG&255 } STA ICBADR LDA #WMSG/256 STA ICBADR+1 LDA #0 STA ICBLEN+1 LDA #37 STA ICBLEN L}DA #CPBINR STA ICCOM LDX #0 JSR CIO TYA BMI ERR RTSERR JMP ERROR;WMSG .BYTE " } C.Buerger Atari User Group Koeln ",$9B;Following replaces the old E:ECHANGE LDY #0 ELOOP LDA HATABS,Y CMP #'E. } BEQ EFOUND INY INY CPY #34 BNE ELOOP RTS ;Store new handler table adressEFOUND INY } LDA #WEDGETAB&255 STA HATABS,Y INY LDA #WEDGETAB/256 STA HATABS,Y;Transfer Editor table to wedge t} .TITLE The Atari Wedge 1.13 by C.Buerger Atari User Group Koeln /W13.ASM .OPT NOLIST *=$1F00COM =$0342}BADR =$344BLEN =$0348AUX1 =$034APN =$03CPTXTR =$09CGTXTR =$05CPBINR =$0BCCLOSE =$0CCIO =$E456 }OPDIR =$06HATABS =$031ALBUFF =$0580LENGTH =$CBMEMLO =$02E7PARMS =$CCCOM =$CDDOSINIT =$0CSETVBI  } =$E45CXITVBI =$E462IMMVBI =$E45FPUTLIN =$F385ENTRY PLA INIT LDA DOSINIT STA REINIT+1 LDA DOSINIT+1 } STA REINIT+2INIT2 LDA #REINIT&255 STA DOSINIT LDA #REINIT/256 STA DOSINIT+1 JSR MSG LDX #G }ENVBI/256 LDY #GENVBI&255 LDA #7 JSR SETVBI JSR ECHANGE LDA #ENDWEDGE&255 STA MEMLO  } LDA #ENDWEDGE/256 STA MEMLO+1 RTSREINIT JSR XXXX JSR INIT2 XXXX RTS MSG LDA #WMSG&255 } STA ICBADR LDA #WMSG/256 STA ICBADR+1 LDA #0 STA ICBLEN+1 LDA #37 STA ICBLEN L}DA #CPBINR STA ICCOM LDX #0 JSR CIO TYA BMI ERR RTSERR JMP ERROR;WMSG .BYTE " } C.Buerger Atari User Group Koeln ",$9B;Following replaces the old E:ECHANGE LDY #0 ELOOP LDA HATABS,Y CMP #'E. } BEQ EFOUND INY INY CPY #34 BNE ELOOP RTS ;Store new handler table adressEFOUND INY } LDA #WEDGETAB&255 STA HATABS,Y INY LDA #WEDGETAB/256 STA HATABS,Y;Transfer Editor table to wedge t}able LDX #0XFER LDA $E400,X STA WEDGETAB,X INX CPX #16 BNE XFER;Patch in MYINPUT routine } LDA #MYINPUT-1&255 STA WEDGETAB+4 LDA #MYINPUT-1/256 STA WEDGETAB+5 CLC LDA $E404 ADC} #1 STA MYINPUT+1 LDA $E405 ADC #0 STA MYINPUT+2 LDA #0 STA LENGTH RTS;Wedge }handler address tableWEDGETAB *=*+16YSAVE *=*+1 XSAVE *=*+1JUMPADR *=*+2 MYINPUT;The $F63E address is actually placed h}ere obove code;to permit this routine to run on the REVISION B OS;(where it woudn't be $F63E) JSR $F63E PHP } CMP #155 BEQ ENDLINE INC LENGTH PLP RTS ENDLINE STY YSAVE STX XSAVE LDA LENG}TH BEQ RETURN.LINELOOKUP LDA #COMTBL&255 STA COM LDA #COMTBL/256 STA COM+1NEXTCOM LDY #0CO}MPLOOP LDA (COM),Y CMP LBUFF,Y BNE NOTSAME INY LDA (COM),Y BEQ COMFOUND CPY LE}NGTH BNE COMPLOOP JMP RETURN.LINE NOTSAME CMP #255 BEQ RETURN.LINE LDY #0 FINDED LDA (COM),Y } BEQ ENDCOM INC COM BCC NOINC1 INC COM+1NOINC1 JMP FINDED ENDCOM CLC LDA COM ADC #3 } STA COM BCC NOINC2 INC COM+1NOINC2 JMP NEXTCOMCOMFOUND INY STY PARMS LDA (COM),Y }STA JUMPADR INY LDA (COM),Y STA JUMPADR+1 JMP(JUMPADR) EXIT LDY #0 LDA #'. STA LBUFF,}Y ;ALLOWS BASIC TO ignore lineRETURN.LINE LDA #0 STA LENGTH LDY YSAVE LDX XSAVE LDA #155  } PLP RTS COMTBL;WEDGE COMMANDS AND COMMAND TABLE;format is:;.BYTE "COMMAND",0;.WORD COMMAND.ADRESS;END OF TAB!}LE IS;.BYTE 255 .BYTE "DIR",0 .WORD DIR .BYTE "SCRATCH",0 .WORD SCRATCH .BYTE "LOCK",0 ."}WORD LOCK .BYTE "UNLOCK",0 .WORD UNLOCK .BYTE "RENAME",0 .WORD RENAME .BYTE "KILL",0 .WOR#}D KILL .BYTE "FLASH",0 .WORD FLASH .BYTE "QUICK",0 .WORD QUICK .BYTE "INFO",0 .WORD INFO$} .BYTE "SLOW",0 .WORD SLOW .BYTE "VAR",0 .WORD VAR .BYTE "L.",0 .WORD LIST .BYTE 255%}DIRBUF *=*+20DIRNAME .BYTE "D:*.*";;Start of commands;DIR LDX #$50 LDA #CCLOSE STA ICCOM,X JS&}R CIO ;OPEN#5,6,0,"D:*.*" LDX #$50 LDA #COPN STA ICCOM,X LDA #OPDIR STA ICAUX1,X LDA '}#DIRNAME&255 STA ICBADR,X LDA #DIRNAME/256 STA ICBADR+1,X JSR CIO TYA BPL NOERR1 (}JMP ERROR;Print a line to the editorNOERR1NEXT LDX #$50 LDA #CGTXTR STA ICCOM,X LDA #DIRBUF&255 )} STA ICBADR,X STA ICBADR LDA #DIRBUF/256 STA ICBADR+1,X STA ICBADR+1 LDA #20 STA ICBLEN*},X STA ICBLEN JSR CIO TYA BMI ENDIR NOERR2 LDA #CPTXTR STA ICCOM LDX #0 JSR CI+}O JMP NEXTENDIR LDX #$50 LDA #CCLOSE STA ICCOM,X JSR CIO JMP EXIT;End of directory routine;,}Following routine is used by lock;UNLOCK SRATCH, AND RENAME;FILENAME BUFFER IS IN LBUFF;e.g. LOCK D:TEMP;this ^portion is-} used;to tell CIO the filenameCALLCIO LDX #$50 STA ICCOM,X LDA #0 STA ICBLEN+1,X LDY LENG.}TH STA LBUFF,Y SEC TYA SBC PARMS STA ICBLEN,X CLC LDA #LBUFF&255 ADC PARMS/} STA ICBADR,X LDA #LBUFF/256 ADC #0 STA ICBADR+1,X JSR CIO TYA BPL NOERR3 JMP0} ERRORNOERR3 JMP EXITSCRATCH LDA #33 JMP CALLCIOLOCK LDA #35 JMP CALLCIOUNLOCK LDA #36 JMP CA1}LLCIORENAME LDA #32 JMP CALLCIO;Remove WedgeKILL LDA REINIT+1 STA DOSINIT LDA REINIT+2 STA D2}OSINIT+1 JMP $E474 ;END OF CURRENT WEDGEERROR PHA LDX #$50 LDA #CCLOSE STA ICCOM,X JSR CIO 3} PLA LDX #$FF TXS STA $B9 JMP $B940 ;in the Basic catridge .TITLE VBI-CONTROLLER 1.0 by C.B4}uerger;GENVBI PHP PHA LDA COUNT CMP #6 BNE JUMPY LDA #0 STA COUNTJUMPY TA5}Y LDA SWITCH,Y CMP #1 BNE TOGENVBI LDA SWITCH+1,Y TAX LDA VBIADR,X STA JMPSUB LDA VBIADR+1,X 6}STA JMPSUB+1 JMP (JMPSUB) TOGENVBI INC COUNT INC COUNT PLA PLP JMP XITVBI;ADRESS AND SWITCHTABLEJMPS7}UB .BYTE0,0 COUNT .BYTE 0 SWITCH .BYTE 0,0 .BYTE 0,2 .BYTE 0,4 .BYTE 0,6 .BYTE 0,8VBIADR .8}WORD FLASHVBI .WORD INFOVBI .WORD SLOWVBISWITCHONOFF LDA SWITCH,X EOR #1 STA SWITCH,X JMP EXIT .TITLE F9}LASH 1.2 by C.Buerger;FLASH LDX #0 LDA #2 STA 755 JMP SWITCHONOFFFLASHVBI :} LDA $14 AND #$10 LSR A LSR A LSR A STA 755 JMP TOGENVBI .TITLE "QUICKTYPER 2.0 -- copy;}right 1982 Synapse software";CH=$2FC KBCODE=$D209 SHFCTRL=$C0 VKEYBD=$208 ONOFF .BYTE 0QUIOFF<} LDX #$E7 LDY #$D1 LDA #$6 JSR SETVBI JMP EXITQUICK LDA ONOFF EOR #1 STA ONOFF CMP #0 BEQ QUIOFF LDX #QUICKVBI/2=}56 LDY #QUICKVBI&255 LDA #6 JSR SETVBI SEI LDA VKEYBD STA KEYRTN+1 LDA VKEYBD+1 STA KEYRTN+2 LDA #STARTER&255 >} STA VKEYBD LDA #STARTER/256 STA VKEYBD+1 CLI JMPEXIT1 JMP EXITSTARTER TXA PHA LDA KBCODE CMP #SHFCTRL BCC EX?}IT1 LDA KBCODE LDX #LEN-1 QUILOOP CMP TABLE,X BEQ GETIT DEX CPX #$FF BNE QUILOOP ;Keypress not valid....EXIT1 P@}LA TAXKEYRTN JMP KEYRTN GETIT INX STX POS LDA DELAY STA INPROG JMP EXIT1QUICKVBI LDA CH CMP #$FF BNE EXIT2 A} LDA INPROG BMI EXIT2 BEQ NODELAY DEC INPROG JMP EXIT2 NODELAY LDX POS LDA TABLE,X BMI DONE STA CH INC POS B}LDA DELAY STA INPROG EXIT2 JMP IMMVBI DONE DEC INPROG BNE EXIT2 INPROG .BYTE 0POS .BYTE 0DELAY .BYTE 1 TABLE .BYTE C}204,$0C,$27,$7C .BYTE 246,$7D,$68,$22,$32,$C .BYTE 202,$0A,$08,$3E,$0D,$2D,$D,$08,$23 .BYTE 254,$7E,$2D,$0D,$12,$05,$70D} .BYTE 223,$12,0,8,$3F,$3A,$C .BYTE 222,$12,$3E,$3F,$10,$2A,$C .BYTE 218,$2A,$23,$2D,$2A,$28,$5E,$12,$42,$5E .BYTE 21E}6,$0,$0D,$3E,$2D,$5E,$12,$42,$5E .BYTE 221,$08,$0A,$2A,$23,$5A,$1F,$20,$18,$20,$32,$20,$5E .BYTE 239,$12,$0,$8,$3E,$2A,$5F}A .BYTE 243,$3F,$3E,$12,$70 .BYTE 253,$3D,$31,$28,$3F,$0A,$39,$0D,$12,$3E .BYTE 235,$0A,$0,$08,$2D .BYTE 245,$12,$39,G}$28,$58,$70 .BYTE 200,$7E,$48,$4B,$63,$7A .BYTE 238,$38,$08,$28,$21,$0D,$0F .BYTE 226,$6A,$63,$7A,$C .BYTE 203,$3D,$0H}8,$3E,$0B,$15,$21 .BYTE 205,$28,$2A,$2D,$0B,$28,$23 .BYTE 227,$0,$8,$12,$3F,$2D,$2A,$21 .BYTE 225,$68,$6A,$65,$61 .BYI}TE 207,$4A,$48,$45,$6A,$21 .BYTE 206,$4A,$6A,$6A,$45,$70 .BYTE 237,$40,$4D,$7E,$6D,$C .BYTE 232,$68,$4B,$63,$0C .BYTEJ} 234,$3E,$2A,$2D,$12,$08,0,$08,$28 .BYTE 219,$66,$5A,$1B,$02 .BYTE 250,$3A,$28,$3F,$2E,$2D,$08 .BYTE 231,$3A,$3F,$2D,$3K}F,$21 .BYTE 252,$66,$38,$28,$2A,$70,$16,$72,$0C .BYTE 128 LEN=*-TABLE .TITLE "SLOWLIST -- listing controller" (c) 1982L} Synapse Software;=============================CONSOL=$D01F SSFLAG=$2FF SLOW LDX #4 JMP SWITCHONOFFSLOWVBI LDA #$0M}2 BIT CONSOL BNE NOSELECT LDA CNTR BEQ RESET DEC CNTR LDA #$01 STA SSFLAG JMP RETURNRESET LDA SPEED STA CNTRN} LDA #$00 STA SSFLAG JMP RETURNNOSELECT LDA #$01 AND CONSOL EOR #$01 STA SSFLAG JMP RETURNCNTR .BYTE 0SPEED .BYTO}E 4 VAR LDA $82 STA $E0 LDA $83 STA $E1 LDA $84 SBC $82 BEQ OUT P} LDY #0VLOOP JMP OUTOKAY LDA ($E0),Y CMP #$80 BCS VEND JSR $F6A4GOON LDY #0 CLQ}C LDA $E0 ADC #1 STA $E0 LDA $E1 ADC #0 STA $E1 JMP VLOOPOUT LDAR} $85 CMP $E1 BNE OKAY LDA $84 CMP $E0 BNE OKAY JMP EXITVEND SBC #$80 S} JSR $F6A4 LDA #', JSR $F6A4 JMP GOON .TITLE "INFORMER II -- Internal status line"--Copyright 198T}2 Synapse software;SDLST=$230 ROWCUR=$54 COLCUR=$55 SHFLOK=$2BE INVFLG=$2B6 MEMTOP=$90 HIMEM=$2U}E5 INFO LDX #2 JMP SWITCHONOFFINFOVBI LDA SDLST+1 CMP #DSPLST/256 BEQ MAKELN ;Setup new DISPLAY-LIST header LDA SDLV}ST CLC ADC #3 STA JMPADR LDA SDLST+1 ADC #0 STA JMPADR+1 LDA #DSPLST&255 STA SDLST LDA #DSPLST/256 STA SDLST+W}1;Create the informer lineMAKELN LDA ROWCUR LDY #RSPOT-MESSAGE JSR CONVRT LDA COLCUR LDY #CSPOT-MESSAGE JSR CONVRTX};Find the CAPS/LOWR and INVERSE;modes. LDA SHFLOK CLC ROL A ROL A ROL A TAX LDA SHFTBL,X ORA INVFLG EOR #$80Y} STA LSPOT;put free ram on screen SEC LDA HIMEM SBC MEMTOP TAY LDA HIMEM+1 SBC MEMTOP+1 LDX #$00LOOP PHA LSR AZ} LSR A LSR A LSR A JSR CB2AH STA FRESPOT,X INX PLA AND #$0F JSR CB2AH STA FRESPOT,X INX CPX #$04 BEQ RETURN[} TYA JMP LOOPRETURN JMP TOGENVBI CB2AH CMP #$0A BCC NUMBER CLC ADC #$97 RTSNUMBER ORA #$90 RTS JMP RETURN CONV\}RT LDX #4 LOOP2 CMP MAXTBL,X BCS FOUND DEX BNE LOOP2FOUND SEC SBC MAXTBL,X ORA #$90 STA MESSAGE+1,Y LDA CHRTBL,]}X STA MESSAGE,Y RTSDSPLST .BYTE $70,$60,$10,$42 .WORD MESSAGE .BYTE $01 JMPADR .WORD 0;SHFTBL .BYTE $61,$21,$40 MA^}XTBL .BYTE 0,10,20,30,40 CHRTBL .BYTE $90,$91,$92,$93,$94 MESSAGE .BYTE $80,$A9,$EE,$E6,$EF .BYTE $F2,$ED,$E5,$F2,$80,$D6_} .BYTE $AD,$EF,$E4,$E5,$9A,$80LSPOT .BYTE 0 .BYTE $80,$D6,$B2,$80RSPOT .BYTE 0,0 .BYTE $80,$80,$A3,$80CSPOT .BYTE 0,0 `} .BYTE $C2,$80,$A6,$80,$84FRESPOT .BYTE 0,0,0,0 .BYTE $80LIST LDX #0LOOKY LDA LBUFF+2,X CMP #'- BEa}Q WORK CPX #$5 BEQ STUFFBACK CMP $9B BEQ STUFFBACK INX JMP LOOKYSTUFFBACK JMb}P EXITWORK CPX #0 BEQ UNTIL FROM STX XRAM WRITEBUF DEX LDA LBUFF+2,X STA LISTBUF0+4,X c} CPX #0 BEQ NEWBUF0 JMP WRITEBUF XRAM .BYTE 0NEWBUF0 LDX XRAMALTER0 CPX #5 BEQ NEWBUF d} LDA #$20 STA LISTBUF0+4,X INX JMP ALTER0LISTBUF0 .BYTE "LIST ,32768" .BYTE $9B e}NEWBUF LDX #0ALTER LDA LISTBUF0,X STA LBUFF,X CPX #15 BEQ LISTEND STX XRAM JSR $f}F6A4 LDX XRAM INX JMP ALTERLISTEND JMP RETURN.LINELISTBUF1 .BYTE"LIST0, ",$9BUNTIL LDA LBUFF+g}3,X CPX #5 BEQ NEWWRITE0 STA LISTBUF1+6,X INX JMP UNTILNEWWRITE0 LDX #0ALTER1 LDA LISq}e`B'DOS SYSB*+DUP SYSUW14 ASMCW141 652CW14 cW14 b sAUTORUN SYSbv|BASCOMP OBJb6ASM OBJb (SYSEQU ABCb!5SYSLIB FP bVSYSLIB INTTBUF1,X STA LBUFF,X INX CPX #12 BNE ALTER1 JMP LISTENDENDWEDGE *=$2E0 r} .WORD INIT .END,X INX CPX #12 BNE ALTER1 JMP LISTENDENDWEDGE *=$2E0 @@L@ @L@@@.@`GHFH`/@E@ @`B V w@F@]@dd1w@8/ i x@^@o@ 0y@t}o@ %@`p@|@ERROR- }@@?Run address> Trace:@@BASIC exit@@RjU T@@2eC %@L@@u}@0@@180i@A1iȠȑA+AȑȑAȭ0,AAA1} @v}T.CBAYA %@TU.C %@TZAqAUB %@UT1B %@rAAU TjB %@U TAAB %@ UTC %@AA0w}1YʶAA :UTAAB %@ BR`UAATB %@R 6@WABDCE LBx}BB`B0BTHE BASIC COMPILER1BDB(C) 1983 special EBXB software YBpB systems qBBy} Licensed to BB BB BB All rights BBreserved BB z} ЮBB BC CC C-COMPILER OR OS?.CACBCVC{}WCdCD:BASCOMP.OBJeCuCREMOVE CARTRIDGESvCC AND REBOOT.@@F@]@dd1w@8/ i x@^@o@ 0y@RLL7L}LLLLL&LL'.FIL ''>D1:ASSEM.SG1'  ?V8506+2  Wm } '}}   5n6`5 ` DEBHILV䄄 }`HHI Bh~}L)HIL&EDH I8  -EDJKL&%EDJK&=B V}>U HLd8d/ i Vl 0H hm   ̢ Lq`l SYSTEM ERROR: 100}PRESS TO CONTINUE> FILE NOT FOUNDCAN'T FIND DUP.SYSULRC@l SW $̍SW 'sW3W`}ŕ`P # Al 0 L NO ROOM FOR TOKEN3VCVsV + A 5' % END_OF_PASS16 x&} # % ERROR(S) DETECTEDLJQ0   5 K T U  %SYSTEM ERROR-- CANLJQD0:ASM.OBJINSERT COMPILER }DISK INTO DRIVE #1THEN PRESS QLiSW0 GYsW`iH***8嶅巅SWh }x&XsW 'tW`SW Q %ƶLSW Q % Q %ƶ %LsW3VCVsV +sW^ Q QLi }x& 5' % COMPILING LINE  # LCV 'DV3VsV + Q Q J sW@,  ?# %DSEC ?# %.BYT ' Qɛ }L! %',EOSsWL!  O NEsWL!LisVT-ƨ) % COMPILER ERRORBAD FREE TEMPLJQCVTƨ0`WTW}脚 &Ŷ %LDX #< #  %LDY #> # %JSR STOW`樦TW` %STY ` %STA ` %STX ` %LDA ` %LDX ` %}LDY ` %TYA` %DEY`CV`sVZVTV #LW #LâV #LӢV #LSV #LcV #LV #LV #L}W ` L V8L` `i敥ƫƪ`WV CV3V # #桁`} # #`ơƠ`槦X`XƧ` #3V`CVL# #3V #sVL#VL#VL#sWLn#`TAL}Sᤚ %`L` &TW`8ʆŒ a$ #L` SYM TAB FULL 1$ȥ}̠ ȩX3W x& '4W``ȱ ` % %9}ȱ % %i晥ƬLu$̠ȱ 3W4W`X3W8嘅JfJfJf x& }'4W`%%ѐΡ%`ѐ`脚 &&&&8嶅巅`̠ %L$hh} L%HH`Ȅ+- 0G:Lw&ƼȄ0":H &h)ef 8嶅巅`}0ݿ&& & 0$0̩`' d &J uffff` & 8}`hhȱȱȱi淠ȱl`L(:'L(0 +* % .BYT ' * %',EOS} L(@@L( +* (U3 % .DBY I ( 8ԅԩՅդԥ @ L( % .BYT , Ԩ @} L(hȱ? ݭU}'' ٥ԅՅ +* % *=*+ x& # L( +* % *=*+6U2  L(}Hȱ/ ٥ԅՅ +* % *=*+ x& # L( +* % *=*+118ƮŕLG'ŔLG'`ȱLݠȱ}LݠȱLݠȱL ( &խU *eԥeեԅՅ x&sVW+WȽWW` ? %JSR S}TO` ? %JSR STO` ? %JSR LD1` ?L) ? %JSR LD0` ?L)WV `WsV `WCV `W`}TW x& 'W`†àª…†àȪ0' ' `HHX 8孅JfJfJf x& #hh`V #}2#VVV ( ٥ԅՅ x& 'V 'V`!#VVV 'VV 'VV` 'VV 'VV+}ȩ1ȩ`V #2#VW>WW 'VV 'WV`} 'VV 'WVL*sV #ͅ2#VVV ( ٥ԅՅ x& 'V 'V`!#VVV 'VsV} 'VsV` 'VsV 'VsVL*CV #ͅǥ4#SVcVdV ( ٥ԅՅ x& 'eV 'UVL,##SVcVdV 'UVCV 'eVCVL, 'SVCV 'cVCV * p+ ?#3VE %*=$3200.WOR DSEC.WOR CSEC.WOR VSEC.WOR VENDMAINJSR INITL?}Lf-  %JMP EXIT %DSEC %CSEC:' ;' %VSEC:' ;' %VEND0T  x& # % *=*+6步ũ֐} %L99999.ENDL?6 " [" "# <  "  ">  "  %JSR ADRL? %JSR TABL? %JSR CRL?L. ! }*VTƨW (P "V # %+1 %LDA #0BEQ *+5 " " %,Y n" " %,Y " %BPL *-7L. " " " %STA P1 }" " %STA P1+1 " " %STA P2 " " %STA P2+1 " " %STA C1 " # %STA C1+1 %JSR MVC )L?L/CVTƨ })L. %LDA FR0U' %ORA FR0+1L / " "U %ORA " ) %BNE *+5L?ɚ %PLAPLAL?ɞ %RTSL? )L}/CV %LDX #DSECL/ ( ٥ %LDY #$FFL/ %LDX #Lԥ @ 3V %JSR TRAP })L? %JSR REST )L?  LJ0CVA %JMP " LD0 OLD03V  %JMP LL40 %JSR L ( ٤ԥ @}  )L? "  )L? %JMP EXITL?Ɇ %JMP MAINL?+ ! ) ) %JSR GR )L? ! ) ) %JSR CMD })L?, h ! ) ) %JSR L0 ) ) ) %JSR I3V, %PLTL51 %DRWL51 %POSL51 %PNT )L?}Lp1 %JSR NOTE ? %JSR ST0 ? %JSR ST1L51ɬk * !VTƨ " ) %FR0L1 " " ) %FR0L1 " " ) }%FR0L1V #  %JSR SCOL )L? ! ) " ? %JSR SPRL?ɀ^ * ^* !TVƨͳVƨ ) " "V #  %}STA FR0 " " " " " " %JSR VOX )L?ɂF ! ) %LDX FR0LDY FR0+1L2 " " " " %STX USRSTY USR+1L?ɁH }! )! %LDA FR0PHALDA FR0+1PHAL2 " " %PHA " " %PHAL?Ʌ[ ! " ) %FR0L3 " " ) %FR0L/3 "}3V %JSR OPEN )L? %JSR XIO )L?& ! ) ?Ls3 " ) %JSR PRN )L? ! ) ) %JSR CLOSEL? %}JSR GETLL? %JSR GTL2L?ɩ %JSR RNUM `)L?ɮ ɯLr4 ! ) %JSR MOV " " " "L 4 @ (@3V }%JSR GETSLl4ɮ %JSR RSTRLl4ɯ %JSR FSPCLl4 %JSR SPR2 )L? ! [" %JSR GETNL?@&L5 !}ٌ4 ) ) ? %JSR INML 5 ) ) " ) ? %JSR ADD `)L 5 ? %JSR ADD `) 'WCVL? " ) "} L?ɫ" %JSR GETLM5 %JSR STAT `)L?ɪ ) ) %JSR PUTL?L5 ! " ) X# )L? [" ) " ) %LD}X #< "  %LDY #> "  %JSR SSCRL?L(6 ! ) # #L%6 [" ) " ) %LDX #< "  %LDY #> " %J}SR NDXL?FQ ! ["* " " ( ٤ԥ @ %LDA #0JSR IFPLz6 ) " ) %JSR PEEKL?- !Ųų` ) ) }) ) p) 'WsVL?əLC7 !T ( %LDY #ԥ @ L6 ) ) %JSR FPILDY FR0 e" ( ٤ԥ @ L@7 )} %JSR MOV )L47 ) ) ) %JSR POKL?7 ! ) %JSR MOV )Ll7 ) ) ) %JSR MVX )L?L58 ! *VTƨ}3- ( ٥ԅՅ ( 8孅ԥ宅 % ?L08 [" [" )3 " "# <  "  "# >  " %JSR LD0 ? %}JSR SUBJSR FPI ) X#ƨ 9`3V%&) *ɓLK: !L8L8 ( (3V% fL8& `L8)}4 L8*  D % ?LH:C= ( 8 x&CV+CVȽCVCV n#LH: ["3VLk9T}WSV-SV1TVUVcV-cV1dVeV " ? %JSR LD1 " " " " %JSR SADLE:3V%ɓL9 ) ?L9 )} " ) ?3Vɓ %JSR ADDLE: %JSR ADILE:&L9 ) ? %JSR ISUBLE: ) " ) ? %JSR SUBLE:)( ) ?L: )} " ) ? %JSR LORLE: ) ?L8: ) " ) ? %JSR LANDL?L?/5LZ;V #V # * ^*VTƨVTƨ ! ["}#TW " " " %STA C1 " " %STA C1+1 " " %STA C2 " " %STA C2+1 " " %STA P1 " # %STA P1+1 " " }%STA P2 " " %STA P2+1 %JSR 83V/B; H; S  L?LNGLGEEEETTQGNLGLETETEEQ#L; ! [" ), ) " ) }? %JSR 83VB; H; L; ? %JSR 83VN; T;  L?DULN< ! [" ) " ) %JSR 83V=< < 5}<  L?SCUAVLAAC SRFXLCSSAIPSPSFTHSSAEDTO INRPOLQGBNDTTTPRRRCLNRNS NDEOGGRNSTLKGGIɭ#U3VL; ( % ! ?L?}? (I % ? )L? ! [" ) " ) %JSR NEGL?$ɔ'UɒLT=#L=L= ! [" ) ?L< ) " ) }?3Vɔ %JSR MULL= %JSR MLIL= ! [" ) ? %JSR IDIVL= ) " ) ? %JSR DIVL= ! [" ) ? %JSR IMODL}= ) " ) ? %JSR MODL= ! [" ) ? %JSR IEXPL= ) " ) ? %JSR EXPL?( ! [" ) " ) %JSR NOTL}?@B CALk>sV # p+ ! ["3VB (@ %JSR LENLh>C (@ %JSR ADRLh>A @ (@ %JSR VALLh> (@ %JSR ASCL}?Q) ! [" ) " " "L> " %JSR PDLL? ! ) " ) %JSR COLL?>. ) " ) %JSR CHR4 % ?U@ n}#L?=. ) " ) %JSR STRX@ % ?U@ n#L?L? "L?J- %LDA # ( ٥ @  %STA ICBL}? ) ) %JSR SCBL? 5' %*** ILLEGAL CODE  L3W )L5' ) X#L5'3WLn#` "# <  "  "# >  "L }"# <  "  "# >  "L " " " # %STX FR1STY FR1+1` ) " " " "L" " %FR0 " %FR0+1`S0@ }W #LLELn#HH J DhhsW<>ȱ ݥ O % 'CV3W3V # + J D3V # # +` x&L# J sW}`sW5sWLA6sWLA BAsW%&` # J BA #3V #sV3V # +sW%&` tAsW$ 'ɒ` #} J tA # +sW$'ɒ` AsW#` # J A # +sW#`ƭsW( # J tA #3V #sVL+sW+ J DsW, OL}J L@BsWON@HFBQACD;E7G3I/J+K'L#MPREST =>LB # J sW: O} J DsV # #3V +$ƭ3V>=ƭsW, OLDLJ ?LzC J : OH J D3VsV # + Q ?# " %#>W }# %-1PHA " %#<W # %-1PHALDA #>USX-1PHALDA # ?# %DEXBNE *+8 3V 'CVsWsV + 3V 'CVWsV +LK ?# %DEXBNE *+5 3V 'CVsWsV + J h ?# ^@ }#CVTƨLO J D3VsV # +LOLpL # J  Q J  O3VCVsV +LK J SWS # J sW+( # # }J DsW, O # + J L8L #3VCVsV + # +LfLSW A3V # +sWLO"LL J SW # J 3VCVs}V # +LLSW A3V # +sWLO3 # ?# %JSR LPR J LCONTINUE OR ABORT (C/A)? ˩AWʅ˅ x& 'W` J D3VsV #L}+LRLȹ:ɛ` R ^LS R*R R08*R *R R+R R08+R*R*R*}R*R *R)R`LQ&D R #U ,R)R Q#URWʅ˅΅ }- %} T %REMOVE CARTRIDGES AND REBOOT.LS]Y ] v %*** BASIC COMPILER V1.4 ***(C})1983 SPECIAL SOFTWARE SYSTEMS***INSERT PROGRAM DISKLSU UUj  V U  Vɛ  } |U ɛLS Q:D V:Vȹ Vɛ 0#0 Q Q %FILE NOT BASICLS U  Q:D:}ȹɛ  0¢ UU FIUȹaU ȹoU  Q Q Q Q8嶅巅} Q Q Q Q8庅廅 Q Q Q Q QƷƶ8ƻ01 Q) **H %BAD TYPEhU u$ Qƶ $}#L D1:SYSLIB.INTD1:SYSLIB.FP FOR DIRECTORY BASIC FILE?-->OBJECT FILE?-->NTEGER ORLOATING POINTARITHMETIC?-}->D:*.*LL&LL'.FIL ''>D1:ASSEM.SG1'  ?V8506+2  Wm } 'd}L=f d i d` 4d =hLjd d b ԅ ؠȹ0&0 L3d0Hh ,{L\dh wg蹀)Hh ,{`h wg` #!}g (e System Error 'd (e Insert disk with DUP.SYS f } {Ld wg`HhLwghL,{0 BHI V!}Lsd`H$h`L#g #g (e} PASS_4Lj{hhHh wgLDeh ,{ TeL0e TeHH``D:SYSEQU.ABC@B!}D$EH?I VLsd0HHII`0 BD$E VLsd` 4g (e Can't find file -->DE ɛ!} wg (e Please Insert Correct Disk (e PRESS ANY KEY TO CONTINUE Lag #g g@BDEJK V Ls!}d eLCf ie0 BDE V eLuf0BDEJK VLsd e e@ 4g B[DeEJK V !}Lsd eLf BD$EH?I VLsd 4gLi 4g 4g0 4g@ BLVHh #gLsd`!} wgH wgh`J g J`l v #dD 01:!}`.LsdE F Lsd`L{h B[DeEJK V Lsd eLh BD$EH!}?I VLsd 4g d`'Lsd'򩛙 4g BDEJK V eLh BD!}$EH?I VLsd 4g d`݅إ8 d Fp (e} PASS_2 9iL0iʅ΅!}ii l˅̅ zʦ v v v v v) СЙ t pLfp"},Lp jpLpLk'  tL>l˅̅ z0'' v步 vLl"} tL>lLcp gLcp jpL?p )qL"pzz Lhk)L#m L#m @L#m)L#m L#m)L#m pL?p,L?pLl jp"}̠Lcp jp'ˠLcp t gLuLuɅ˅̅ z vLcpʥ jpLp;"}L"pA' jy0 e w vLmLcp# Lm(Lp Xqƪ0G? L"p'L'pLp"} 'Lcp汩 pO)氥LDLp,L5LpXLnYLcp3L-"}L'p0 륰Ln Lo=iҥiѥ8҅х0 Loʥ-ʩLJo " }ʩɥɥi L"pi \yeky8L"pɥ8 L]oL"pɥ" }i Looe w v= v v v v/; %C9ȊLcpɥȩLcpLcpʦL.pL.p" }LcpȩLcpLcp˕ {Lw t` LpLrp`8` =;" }ʆ8``'Lp4'$'Lp ) ,Lp8``AZ`8`09`8`" }ĩ q q`8`L+q L+qυЩ%Ls /sLs+--脨Ls /sLs<Lq> "}Ls q L PASS_3L0i dLz%ȐLv (e----> wgΐ (e System error"}L ΐLvH (e Ref: Line #-->hȹ wgΐ (e Unresolved line number 8nu (e Continue (Y/N"}) ? agY5N v (e User abortLsdLsd#d`L wŅ08 u F`e˅iLz˅̅LzHh`)"}h`h``)`Lxei w8婅 weɀ zĩ"}ߢ`` z`HV ziʩ d d d d8ei d"} d d wh` w w d d d d d d d$ dL emm%m%mmm%m%m%mmm mmll`mKm=mkkkBYTWORD"}BYSKIPAGENDOPTFILGENNOGSYMNOSNOCCNTCOUERRNOESANDIALISNOLADCANDASLBCCBCSBEQBITBMIBNEBPLBRKBVCBVSCLCCLDCLICLVCMPCPXCPYDECDEXDEY"}EORINCINXINYJMPJSRLDALDXLDYLSRNOPORAPHAPHPPLAPLPROLRORRTIRTSSBCSECSEDSEISTASTXSTYTAXTAYTSXTXATXSTYA )7ESao}"} "}        " }a!$0PpXʈAL FHh(&f@`8xxuxxHhLdhLde` wL e Lze`H { zh)i0"!}:0iHhL,{hLwgJJJJ``P:BDEH ILVH BDEh VL*|` #gTU} } ""} vj { (e Select option: rint line map un program os Which?--> agP~DRЈLP{ #"#}g } {Lj{ (e Can't find DUP.SYS Insert correct disk` (e Can't open output deviceL} (e To: "$}rinter creen isk Which?--> agSVP(Dв (e DEVICE:FILENAME?--> { {DEBJ"%}K VL*| (e Basic Compiler V1.4 Line Reference MapObject file: 轀ɛ wgL3} ,{L3} (eѥҩ"&}ŚuLv}śjLEȱ:> (eLine # ф wgL} ,{ (e= ѪѨ 'd (eiѥiҥii"'}Le} 4gLj{ (eLsdl @d b ԅ ؠȹ0&0 L3d0Hh ,{L\dh wg蹀)Hh ,{`h wg` # $; D:SYSEQU.ABC; ATARI BASIC COMPILER V1.3; SYSTEM EQUATE FILE; (C) 1982 SPECIAL; SOFTWARE; SYSTEMS&)}; All rights reservedEOS = 155S0 = $480FR0 = $D4FR1 = $E0ICB = $85P1 = $8CC1 = FR0P2 = $90C2 = $92USR = $9&*}4AFP = $D800XPO = $DDC0LOG = $DECDCLG = $DED1SYS *=$2403INIT *=*+3EXIT *=*+3CLR *=*+3NDX *=*+3MVX *=&+}*+3SSCR *=*+3SAD *=*+3MVC *=*+3FPI *=*+3LD0 *=*+3LD1 *=*+3STO *=*+3MOV *=*+3GETL *=*+3GTL2 *=*+3&,}RNUM *=*+3RSTR *=*+3GETN *=*+3GETS *=*+3CR *=*+3TAB *=*+3PRN *=*+3SPR *=*+3SPR2 *=*+3LPR *=*+3OPEN &-} *=*+3CLOSE *=*+3SCB *=*+3PUT *=*+3GET *=*+3STAT *=*+3FSPC *=*+3XIO *=*+3CMD *=*+3INT *=*+3IFP *=*&.}+3RND *=*+3SIN *=*+3COS *=*+3ATN *=*+3SQR *=*+3ABS *=*+3SGN *=*+3USX *=*+3FRE *=*+3LT *=*+3L&/}E *=*+3GT *=*+3GE *=*+3EQ *=*+3NE *=*+3LTS *=*+3LES *=*+3GTS *=*+3GES *=*+3EQS *=*+3NES &0} *=*+3ADR *=*+3ASC *=*+3LEN *=*+3VAL *=*+3STR *=*+3CHR *=*+3ADD *=*+3SUB *=*+3ISUB *=*+3MUL *&1}=*+3DIV *=*+3IDIV *=*+3EXP *=*+3IEXP *=*+3NEG *=*+3LOR *=*+3LAND *=*+3NOT *=*+3INM *=*+3POK *=*+3&2}PEEK *=*+3GR *=*+3COL *=*+3SCOL *=*+3POS *=*+3IPOS *=*+3PLT *=*+3IPLT *=*+3DRW *=*+3IDRW *=*+3STK&3} *=*+3STG *=*+3PDL *=*+3PTG *=*+3VOX *=*+3TRAP *=*+3REST *=*+3ADI *=*+3MLI *=*+3PNT *=*+3IPNT &4} *=*+3NOTE *=*+3ST1 *=*+3ST0 = STO.FIL 'D:ASSEM.SG1'; (C) 1982 SPECIAL; SOFTWARE; SYSTEMS$B$$L2L3%L:+LU%L'L'L'L'$/$L;(LLLLLL[*Lf*0$G$L'L)(L)L(L)L!'L,L*H$_$L'L&L&L&L&L,*LC*L&`$w$L'L&L*6}&L/L0L,L-L-x$$L.L--L0L0L)L)Lu%L~%$$L%L%L%L%L%L%L%L%$$L%L%L(L(L(L(L,L($$Ll&Lc&LZ&Lu&L&L~&L*7},L,$$L+L&L&L&L&LR'Lb'L%0$%L'LU0Lp0Lm0L0L0L0L0%%L>1LR1Lg1L1L%1Lp'L~'LA) %.%LX)L0L0L0L2)3%J%2% ɩ*8}R1%2K%b%2 s'22c%y%捦22` c&z%%0JQ c&A0?F ݥE%%07, `ڥ0.,!%%*9}" c&0 c&%% c& o. 8` D` "&%% "& "&%& "&Ԑ "& "&ͥ&&о ݥзг *:}ݥ&2&Фьɛ D&03&I& O&0 `J&_&ԥ`Ɠƒ` ,`&w&Lf& `ڰ%` fڰ` x&& +` *;} ,L& (۰`&& L* ݢo. fLݨ&& ٥ ` ٥ԅ` &&B VԩL٩P&&pKJ*<}&'BDEL* ''܆ ,L;( '3'ԅ`U 1%4'J'R1%eɐ1%LN' K'a' )` *=}, ٠`b'y' ٠ԅԄL٘*/%z''0%``&դԦԑ''&eԅԊeՅeԅԥeթ''`L 'ԨL݆Ԅ'*>}' , eԥe`@''''Ԅ ,ɛ )' (0` ^( ؐL* (!(ȹɛ"(8(꩛`*?} ^( ,9(O(ɛ摥P(f(0L=(`2 g(}(2L*',~((ɛM'M' (ɛ*@}(( (򩀅((` ٥ԍ`((LنԄLن((ɛԆ( )Lن ,*A}󅐅 )!) ;( ؐ`ԅԥՅL8")7)2ԭ2Lن8)N)` , eO)e)ԥe` , )f)})*B}ԄզՄ~))FԐ eਊe&ԆՕ))fؐ ԅԩՅ`؄֬))ע )Ե 8))`R1%*C} )))L*`GHFH` [*) *0ɛȄ ؐL* * *ɛ )`!*8* )` ٦HI9*P* B*D}L*՝HIQ*g* *L?Y* *h**򦅩H ID**EB Vú**l/% l+dd*E}1**l+8/ i m+ 0n+**d+ *2%:+ ***++2%' ) !'+* +8+ , +!+L*q+ **F} f*ɛD%"+9+C` ذ l S+L2:+O+ S++ *L + S+ P+L +P+d+l p &8`e+q+ERROR- r++?Run addres*G}s> Trace:++BASIC exit++]V 8@8e0P ++4)0u++0)JJJJ0++u0 b*H}إL+ , D`8`I`Դ ,#,` ,L*$,;, )ԩ-ȘH h<,R,00,)S*I},j,`@?"6?Dk,,'8h4d=u#@(>3,,3 ffff@e?1 b?,,@W)WyQB'h ҅ԭ Ҳ,,) ٢,*J} L( ,,,L, ݢ',, , / .1, - ݥ)ԩ 0`H-%- ޢ + hԅ`&-=-*K} L*0t8??>-T-Ԣ ݢh, +b,U-j- fک ݢk-- , (ۢ fڢ\,-- (n *L}, ݙ-- +e)`--, L( -IԢ.-- fL- -I-->LZ.BL$-, - . + *M} ٥j `.#.IԢ, +ԕ$.9. +n, @ݢ:.Q. + +R.i. fn +`r&*N}j..DE@@u"%@2P9?..R5wV@W3@qU?&yI$@..s P?s Pu?P..`H)..Ԣo. .*O} ,o. (... .E ./. fڢ ݢ /'/. u&. c&. c&(/?/ l& &)>^*P}@/W/ + ݢo.X/n/ @ݢ ݢ ݢc.o// @ݢ (ۢ +// + fڭ//I*Q} mi{//i. fhIԥ// , +`LDڥ)D//@D o./0 ``ԅL٥I`0(0*R}o. (``)0@0 & ٢`BԝK)I A0S0JQD0EL*S:U0l0)H)h y`m00 , , ٥T*S}UՅV00`&B *Nԩ՛00 ݦLԽML ,00 , ٠%LM00ԝNBL* , 1` 00BH*T}IL* , 1`01B JKL* ٥1&1UՅV , ٥ԅT`'1=1 H )hҘ`>1T1 ٥)xԩL *U}U1k1))L%L% ٥l11)pԩL ٥Ԅ11)|L%L% 12%11L + 1 1 1 `'L&L(x$$L2L3%L2-LU%L'L(L(L($/$L(Lu%L~%L%L%L%L+L+0$G$LQ(L(L+L}(Lh+L'L-L+H$_$L1(LI'LY'L'L'L,L6,L6'`$w$Lx'L]'L.W}.'L.L.L-L.L .x$$L.L .L.L..L)L)L%L%$$L%L%L&L&L,&L3&L<&LE&$$LS&LL&L=)LD)LS)Lp)L-L/)$$L&L&L&L&L&L&L.X}*L *$$L-Lb&Ls&LZ&L'L'L'LH.$%L'Lx.L.L.L.L.L/L/%%LP/Ld/Ly/L/L7/L'L'L& %.%L&L.L.L.L%3%J%2% ɩ.Y}R1%2K%b%2 '22c%z%捦22`ԤՄ{%%`ȱ`%%ȱ`ȩ%%.Z}`ԑȥՑ`%%Մ`ԤԅդՅ`%% &0<C &03/6%& % )0,( &&&0 & &.[} &2&8`ԅ` &3&I& & & &J&a& & &ʥb&y& %аЪ %z&&.\}Зьɛ&& &0 &0 `Ԩ&&ԥ`Ɠƒ` %&& %L) %L) %eԥ&&e` %L) % u% )Lu.]}%&' %L) % %L) %L) ~%''L% u% `'4' BLV䅆L]' u%ԅ5'J'` B VԩLu%PK'b'p.^}Kc'y'JBDELy,z'' %L( u%ԅ`''U 1%R1%''eɐ1%L' o+._}''` u% % u%` u%''ԅ`,/%0%``' (&eԅԥeՅ` (!(L% 'ԨL~%Ԅ % u%"(/(eԥe.`}`1(H(Ԅ %ɛ o+I(_(0` ( ذI`(w( ( 8ԅԩՅLu%x((L,ȹɛ((.a}꩛` ((( %ɛ((ɛ摥0L(((`2 2L,()0(,ɛM0(.b}))M0( ()ɛ ()).)򩀅`/)E) u%ԍ`ԄLu%F)\)ԄLu%])s)ɛԆ.c}Lu%t)) %󅐅 ( ؋)) u%``ԅԥՅLu%8))2ԭ2Lu%Ԥո))ԅե`8ե))`.d}eեe` ) *))fLu% ) *fLu%8)*ԨՄԅLu% % )*-*ԥՄԩՅօ.*D*ԥFf *.e}ԥE*[* *ԅՅԥզ\*r*Ц`ԅՅʩ0s**ݴ** *** 08f$**˹ .f}`' d** G+1ԦԄ**ՄFԐ eਊ**e&L*Ԇ`hh L,*+ G+Ff+,.g}+&֐ݥ ԆՅԠ&-+C+&&8થօԈD+[+`քע V+Ե \+r+8`R1%s++ +L,.h}`GH++FH` +0ɛȄ++ ؐL,HI h++ 8ԅԩՅLu%?++Ƞ+ ,򦅩D++E.i}BHILy,+,ɛ o+`,+, o+` u%HI,,C, BLy,՝HID,[, v,Lu%EDH.j} I\,r, Lv,EDH Is,,Lv,B Vú,,l/% g-dd1g-8,,/ i h- 0i-_,,- ,.k}2%>- ,-,,-2%+ h+ '-,,Ԏ-8ե -,-L,m- , +ɛD(-.-C` ذ K-L- .l}N-/-D-L2 N-}- ,L- N- H-E-[-L-l lp '8\-m-`ERROR- n-}-?Run address> ~--BASIC exitTrace:--8.m}Յթԅ` -L+-- --ȘH c*--h00,--)` % ҅-. ) )օե.n}ׅ` L, . .L.L.L.L.``Յ`8!.7.Յթԅ`0 8.N.ԩ`ԅ`` 'O.f. u%`BԝK)I Jg.v.t.o}D.ELVS:x..)H)h y`.. % u% % u%TԅUՅV..`&B y,N..LսM` % u%ԝL.p}..՝MN%BLy, % /./` BHILy, %// /`B JKLy,/2/ u%ԅUՅV % u%ԅT3/J/` .q}H )hK/`/` u%)xԩa/x/Lu% u%))L$&L&y// u%)pԩLu%// u%)|L&L$& ///.r}2%L- / / / `u%L~%L%L%L%L+L+0$G$LQ(L(L+L}(Lh+L'L-L+H$_$L1(LI'LY'L'L'L,L6,L6'`$w$Lx'L]'L,&REM 2280 DIM A057$(122)2290 A057$(A001)="hhhHhH"2300 A057$(A012)=CHR$(A017)2310 A057$(A013)=" \h`"2320 A057$(t}23)=CHR$(A017)2325 A045=A0312330 A057$(24)=" \hHJJJJ 0ii0 \hH) 0ii0 \ \ \hHJJJJ 0ii0 \hH) 0i"u}2340 A057$(102)="i0 \ \hiH)"2350 RETURN 2360 REM 2370 REM 2380 REM 2390 DIM A056$(122)2400 A056$(A001)="hhv}hHhH"2410 A056$(A012)=CHR$(A017)2420 A056$(A013)=" \h`"2430 A056$(23)=CHR$(A017)2440 A056$(24)=" \hHJJJJ 0iw}i0 \hH) 0ii0 \ \ \hH"2450 A056$(80)=CHR$(A017)2460 A056$(81)=" ۅ] \ \"2470 A056$(102)="x} \hiH)"2480 RETURN 2490 DIM A065$(65):A065$(A001)="hhh i@ԩhhS hhh h Vy}ԅԩ`":RETURN 2500 REM 2501 REM 2502 REM 2510 IF A039$="C" THEN A039$="H":GOTO 25302520 A039$="C"2530 GOSUB A023:RETz}URN 2600 REM 2601 REM 2602 REM 2610 TRAP 2620:FOR A059=A000 TO 22:POSITION A000,A059:INPUT #A004,A035$2612 FOR A058=A001{} TO LEN(A035$):A041=ASC(A035$(A058,A058)):IF A041>127 THEN A041=A041-A0162614 IF A041=127 OR A041<32 THEN A041=452616 A035$|}(A058,A058)=CHR$(A041):NEXT A058:LPRINT A035$:NEXT A059:GOTO 26302620 POSITION A002,A014:? "THE PRINTER IS NOT RESPONDING!"}}2630 RETURN 2700 REM 2701 REM 2702 REM 2710 ? "What is # for conversion";:INPUT A035$:IF LEN(A035$)=A000 THEN RETURN ~}2720 GOSUB A022:IF A04365535 THEN GOSUB A020:RETURN 2730 POSITION A002,A014:? "";A043;" = $";:A045=A043:A043}=INT(A043/A019):GOSUB A021:A043=A045-A019*A043:GOSUB A021:RETURN 3000 REM 3005 REM 3010 REM 3015 IF A067=1 THEN 30303020} DIM A068$(1030),A069$(168),A070$(132):A067=13025 GOSUB 31903030 GOSUB 1160:A071=1664:A045=0:A061=0:A051=125:IF A040$="S" T}HEN A051=1283035 POSITION 2,20:? "Start disassembling at which byte";:INPUT A035$:? "":IF LEN(A035$)=0 THEN RETURN 3040 }GOSUB 490:IF A043<0 OR A043>A051-1 THEN 30353045 A045=A043:A071=A071+A0453050 A072=INT((A061+A045)/8)+3:A054=3*((A061+A045)}-8*(A072-3))+8:POSITION A054,A072:? "<";3055 FOR A053=0 TO 19:POKE 752,1:A066=13060 POSITION 30,A053:A049=4*(PEEK(A071+A061}))3065 A047=ASC(A068$(A049+2,A049+2)):IF A047=0 THEN ? "???";:A061=A061+1:GOTO 31003070 A066=ASC(A068$(A049+3,A049}+3))3075 A038$=A069$(A047*3-2,A047*3):? A038$;"";:IF A066=0 THEN 30953080 A073=ASC(A068$(A049+4,A049+4))3085 ON A}073 GOSUB 3210,3220,3215,3225,3230,3235,3240,3245,3250,3260,3265,3275,32553090 POSITION 33,A053:? ""3095 IF A066<>0 THEN A}061=A061+A0663100 IF A045+A061>A051 THEN A061=A045+A061-A066:GOTO 31353105 IF A045+A061=A051 THEN A061=A045+A061:GOTO 3135}3110 NEXT A0533115 A072=INT((A061+A045)/8)+3:A054=3*((A061+A045)-8*(A072-3))+8:POSITION A054,A072:? "<";3120 POKE 752,0:POS}ITION 2,20:? "Is that enough? (Y or N)";3125 GET #1,A041:? "";:IF A041=89 THEN RETURN 3130 GOTO 30553135 IF A061=A051 TH}EN A053=A053+13140 FOR A059=A053 TO 19:POSITION 30,A059:? "";:NEXT A0593145 POKE 752,0:POSITION 2,20:? "End of} sector. Stop here? (Y or N)";:GET #1,A041:IF A041=89 THEN RETURN 3150 GOSUB 1040:IF A042=0 OR A042=1 THEN POSITION 2,19:? "}END OF FILE!":RETURN 3155 A061=A061-A051:FOR A059=(A061+2) TO 2:POKE 1662+A059,PEEK(1662+A051+A059):NEXT A0593160 GOSUB 124}0:GOSUB 1160:A071=1664:A045=0:GOTO 30553165 REM 3170 A069$="ADCANDASLBCCBCSBEQBITBMIBNEBPLBRKBVCBVSCLCCLDCLICLVCMPCPXCPYDEC}"3175 A069$(LEN(A069$)+1)="DEXDEYEORINCINXINYJMPJSRLDALDXLDYLSRNOPORAPHAPHPPLAPLPROLRORRTIRTSSBCSECSEDSEI"3180 A069$(LEN(A0}69$)+1)="STASTXSTYTAXTAYTSXTXATXSTYA"3185 RETURN 3190 REM LOAD TABLES3195 GOSUB 31653200 GOSUB 32803205 RETURN 3210 ? "}#";3215 A043=PEEK(A071+A061+1):GOSUB 420:RETURN 3220 A043=PEEK(A071+A061+2):GOSUB 420:GOTO 32153225 ? "A";3230 RETURN 32}35 A043=PEEK(A071+A061+1):? "(";:GOSUB 420:? ",X)";:RETURN 3240 A043=PEEK(A071+A061+1):? "(";:GOSUB 420:? "),Y";:RETURN 324}5 A043=PEEK(A071+A061+1):GOSUB 420:? ",X";:RETURN 3250 A043=PEEK(A071+A061+2):GOSUB 420:GOTO 32453255 A043=PEEK(A071+A061+1}):GOSUB 420:? ",Y";:RETURN 3260 A043=PEEK(A071+A061+2):GOSUB 420:GOTO 32553265 A043=PEEK(A071+A061+1):A034$="+":IF A043>127} THEN A034$="-":A043=256-A0433270 ? A034$;A043;:RETURN 3275 ? "(";:A043=PEEK(A071+A061+2):GOSUB 420:A043=PEEK(A071+A061+1):}GOSUB 420:? ")";:RETURN 3280 A068$(1)=" ##% #  #  #}#"3285 A068$(92)="# #   !"3290 A068$(137)=CHR$(34)3295 A068$(138)="#$%}&('(')*(+,-"3300 A068$(183)=".(/0 123456(78-9 :;<= >( ?}@*ABCD"3305 A068$(274)="EF!GH$IJ!KLMN!OP  QRSTUV!WXY Z}"3310 A068$(365)="[\] ^! _`+abcdef)gh&ij)kl mn)op  q"3315 A068$}(456)="rstuv)wx/y z{|} ~) 0201"3320 A068$(547)="6}201 0201 80 7"3325 A068$(621)=CHR$(155)3330 A068$(622)="0 }"3335 A068$(638)="  43   "3340 A068$(}729)="  5    "3345 A068$(820)="}     ,"3350 A068$(911)=",,}"3355 A068$(938)=CHR$(34)3360 A068$(939)=", ,,., "3365 A068$(10}02)=",  "3380 A070$(1)="hhhh \h Mh >hhhhe}ԩeՅՠ"3385 A070$(93)=" hHhԅԩ`hhhhhhhԅ`"3390 RETURN 3400 A050=ASC(A039$):A039$="H":A043=-}1:A074=14:IF A067=1 THEN 34303410 DIM A068$(1030),A069$(168),A070$(132):A067=13420 GOSUB 31903430 GOTO 40003440 GOSUB A02}3:POSITION A002,A014:? "DISKSCAN.DIS IS NOT ON DISK!":RETURN 3520 REM 3521 REM 3522 REM 3530 FOR A059=1 TO LEN(A035$)-1:I}F A035$(A059,A059)<>" " THEN 35403535 A035$=A035$(2):NEXT A0593540 IF LEN(A035$)<3 THEN A035$="":RETURN 3550 A038$=A035$(1},3):IF LEN(A035$)=3 THEN A074=5:A043=-2:GOTO 38003560 A035$=A035$(4):FOR A059=1 TO LEN(A035$):IF A035$(1,1)<>" " THEN 35703}565 A035$=A035$(2):NEXT A0593570 IF A035$(1,1)="$" THEN A035$=A035$(2)3571 IF A035$(1,1)<>"#" THEN 35803572 A035$(1,1)="$"}:A074=1:GOSUB 490:IF A043>255 THEN A035$="":RETURN 3575 GOTO 38003580 IF A035$(1,1)<>"+" AND A035$(1,1)<>"-" THEN 35903582} A074=11:A034$=A035$(1,1):A035$=A035$(2):GOSUB 490:IF A043>127 THEN A035$="":RETURN 3584 IF A034$="-" THEN A043=256-A043358}5 GOTO 38003590 IF A035$(1,1)<>"(" THEN 36203591 IF A035$(2,2)="$" THEN A035$=A035$(2)3592 A035$(1,1)="$":FOR A059=LEN(A03}5$)-1 TO 1 STEP -1:A034$=A035$(A059+1,A059+1)3595 IF A035$(A059,A059)<>")" AND A035$(A059,A059)<>"X" AND A035$(A059,A059)<>"}," THEN 36003596 IF A034$="Y" THEN A074=73597 IF A034$="X" THEN A074=63598 NEXT A0593600 A035$=A035$(1,A059):IF A034$=")"} AND A074<>7 THEN A074=123610 GOSUB 490:GOTO 38003620 IF A035$(1,1)="A" AND LEN(A035$)=1 AND (A038$(1,1)="R" OR A038$(2,2)=}"S") THEN A074=4:A043=-2:GOTO 38003630 IF A035$(LEN(A035$))="Y" OR A035$(LEN(A035$))="X" THEN 36403632 A074=3:IF LEN(A035$)}>2 THEN A074=23633 IF A038$(1,1)="J" THEN A074=23635 GOSUB 3790:A035$(1,1)="$":GOSUB 490:GOTO 38003640 A034$=A035$(LEN(A03}5$)):A035$=A035$(1,LEN(A035$)-2):GOSUB 3790:A035$(1,1)="$":GOSUB 4903650 A074=8:IF A034$="Y" THEN 36603655 IF A043>255 THEN} A074=93656 GOTO 38003660 A074=10:IF A043<255 AND A038$(3,3)="X" THEN A074=133665 GOTO 38003790 FOR A059=LEN(A035$) TO 1 }STEP -1:A035$(A059+1,A059+1)=A035$(A059,A059):NEXT A059:RETURN 3800 A041=USR(ADR(A070$),ADR(A069$),256*ASC(A038$(1,1))+ASC(A}038$(2,2)),256*ASC(A038$(3,3)),ADR(A068$),A074)3810 IF A043=-1 OR A041=255 THEN A035$="":RETURN 3815 A047=A043:A043=A041:GO}SUB 465:A035$=A034$:IF A047=-2 THEN 38303820 A043=A047-256*INT(A047/256):GOSUB 465:A035$(3)=A034$3825 IF A074=2 OR A074=9 O}R A074=10 OR A074=12 THEN A043=INT(A047/256):GOSUB 465:A035$(5)=A034$3830 RETURN 4000 REM 4001 REM 4002 REM 4010 GOSUB 1}160:POSITION 9,19:? "Š"4015 ? "Start assembling at what byte";:INPUT A035$:IF LEN(A035$)=0 THEN 42054020 GOSUB} 490:A048=124:IF A040$="S" THEN A048=1274030 IF A043>A048 OR A043<0 THEN GOSUB 400:GOTO 40154040 A053=INT(A043/8)+3:A054=3*}(A043-8*(A053-3))+6:? " ";:POSITION A054-1,A053:? ">";4200 POSITION 2,20:? "INSTRUCTION";:INPUT A035$:IF LEN(A035$)<>0 THEN} 42104205 A039$=CHR$(A050):POSITION 2,19:? "":RETURN 4210 GOSUB 3520:IF LEN(A035$)=0 THEN ? "";:GOTO 42004220 ? :? A035$}:POSITION A054-1,A053:? " ";4230 FOR A059=1 TO LEN(A035$) STEP 24231 A041=ASC(A035$(A059,A059)):GOSUB 1930:A041=ASC(A035$(A}059+1,A059+1)):GOSUB 1930:A041=31:GOSUB 19304232 IF (A053-3)*8+INT((A054-6)/3)<>A048+1 AND (A053-3)*8+INT((A054-6)/3)<>0 THE}N 42394234 POSITION 2,20:? "End of sector. Write this sector out":? "and go on to next sector?";:GET #1,A041:IF A041<>89 TH}EN 42054236 A041=USR(ADR(A036$),ASC("W"),A042):IF A041<>1 THEN POSITION 2,19:? "CANNOT WRITE TO SECTOR ";A042;"!":GOTO 4205}4237 A047=A042:GOSUB 1040:IF A042=0 OR A042=1 THEN 10204238 GOSUB 1230:GOSUB 1160:POSITION 5,3:? " ";:A053=PEEK(84):A054=PEE}K(85)4239 NEXT A0594240 ? ">";:A053=PEEK(84):A054=PEEK(85):GOTO 42004500 REM 4501 REM 4502 REM 4510 POSITION 2,20:? "}What is base address (if same as":? "before, hit RETURN)";:INPUT A035$:IF LEN(A035$)=0 THEN 45204512 GOSUB 490:IF A043<0 OR} A043>65535 THEN GOSUB 400:RETURN 4514 A075=A043:? "In which sector is base address";:INPUT A035$:GOSUB 490:IF A043>0 AN}D A043<721 THEN 45164515 GOSUB 400:RETURN 4516 A076=A043:? "In which byte of sector ";A076;" is":? "the base address";:IN}PUT A035$:GOSUB 4904518 IF A043<0 OR A043>127 THEN 45154519 A077=A0434520 IF A076=0 THEN 45104525 A043=INT(A075/256):? "}Base addr=$";:GOSUB 420:A043=A075-256*A043:GOSUB 4204527 ? " in Sec ";A076;" ,Byte $";:A043=A077:GOSUB 420:? 4530 ? "Wha}t is destination address";:INPUT A035$:IF LEN(A035$)=0 THEN RETURN 4540 GOSUB 490:IF A043<0 OR A043>65535 THEN 45154550 A04}3=A043-A075:IF A043<0 THEN POSITION 2,19:? "CAN'T GO BACKWARDS!":RETURN 4560 A042=A076:A066=A043+A077:A049=125:IF A040$="S"} THEN A049=1284570 A047=INT(A066/A049)4572 FOR A059=0 TO A047:GOSUB 1230:GOSUB 1040:IF A042<2 AND A059<>A047 THEN POSITION }2,19:? "END OF FILE":RETURN 4574 NEXT A0594580 GOSUB 1160:A043=A066-A047*A049:POSITION 2,19:? "Address found at byte $";:G}OSUB 4204590 A053=INT(A043/8)+3:A054=3*(A043-8*(A053-3))+8:POSITION A054,A053:? "<";:RETURN 5000 REM 5010 REM 5020 REM 5}030 A040$="S":GOSUB 1230:GOSUB 1160:A062=PEEK(144)+256*(PEEK(145))+100:A063=INT((FRE(0)-100)/128)-15040 POSITION 2,20:? "}You have room to make an image of ";A063:? "sectors. Starting with the current"5050 ? "sector, how many sequential sectors":}? "do you want to save";:INPUT A035$:IF LEN(A035$)=0 THEN GOTO 51905060 GOSUB 1160:GOSUB 490:IF A043<0 OR A043>A063 THEN GOS}UB 400:GOTO 50405070 A049=128:A047=A0425080 A045=A043-1:FOR A059=0 TO A045:A041=USR(ADR(A036$)+28,A062+A049*A059,ASC(A036$(}17,17)),ASC("R"),A042)5090 GOSUB 1040:IF A042=1 THEN A045=A059:GOTO 51105100 NEXT A0595110 POSITION 2,20:? "Insert the} destination disk into":? "drive 1 (formatted with DOS 2.0S)"5120 ? "and hit RETURN.":GET #1,A0415130 A042=A047:FOR A059=0 }TO A045:A041=USR(ADR(A036$)+28,A062+A049*A059,1,ASC("W"),A042):GOSUB 1040:NEXT A0595190 GOSUB 1160:RETURN =A047:FOR A059=0 l