@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED697 FREE SECTORS COPYING---D8:COPY32.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 128ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8 uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8 u3{47L7JJJJ)` k6 T4J jɢ )Jn4 34)) JJJ Ȉ` 3H 6 V4ăȐhT}4 5&*i? 6 T44 64 6`0 6豇 b4Ș 6L6 6`8e` T0 U}"T3 |4w5 T3  T; "D3 D"D3 D"D3 "D3 &1!YMJ,),#($YX$$#]#)i#$S#$SV}[[i$$)|mi)S4i#bZH&bTDThDt(ntJrtttrDh2"&&rr&HDD 3hh6B W}Y`EL\lYx5s6@5)I 7LhH 0L7( 7hh 3 5L7hhh b4 `4HHHHX} b6 6*5 6= 6 60` b48 78L6L 6AXYPS摥Ō``BD8E`HI Y}V䩛L6 b6 L4t6o7-L6 ) g6 6 6 06`JJJIeH= 6hHJJJJ 6h) 0:i77 BDZ}7EHI V BD7EHI V䤆7`ƅLx6 7`:L6`8`` *6` k[}7H 3 _4h8`p7k8` k7 7lL5ƅ k7LO5 7hhcl H(`h`BD7EJK V\}7` b6 V7`PЎ ح7 7 b6] 6 D6 _8 ?80d8 V8L 8 &&8I0]} i`7Hs8H`즤l884~55I=Su5530d8 V8L 8 &&8I0@ ********************** *ATARI SYSTEM MONITOR* ********************** written by Tom Walters _} This is a 6502 monitor program for all Atari 8 bit computers. This program is much superior to the program found `}on the Assembler/ Editor cartridge. It is a good program for beginning machine language programmers to have as i a}t is easy to use. THE PROGRAM COMMANDS ARE: General commands: R = display regs. p = send b}display to printer. Q = exit and return to dos. These commands are usually followed by a memory c} addresses. T = trace through program S = single step. L = list 20 instructions. G = exec d}ute program. These are used for hex arithmetic. - = subtract. + = add. e} In addition, these commands are used in conjunction with others . < : f} Memory moves are done using the M command. M = move Format for memory move: (destination)< g} (start).(end)M Hex dumps are listed like this (start).(end) Memory is altered like this (starting h} point):( ) ( ) ( ) the blanks are 2 diget hex numbers; up to 128 chars. This program uses the sin i}gle command line structure. In other words you can have up to 128 command CHARACTERS on 1 line. These are all l j}egal commands: 600PLLLLLLLLLLLL 2000LR 600: 20 20 60 D0 13 I hope this program is of use k} to you. tw 2000LR 600: 20 20 60 D0 13 I hope this program is of use 0 ORG $3380 ***DISASSEMBLER MODULE***L3380 LDA #$00 STA L3713 JMP L37F4L3388m} BCC L338E LSR A LSR A LSR A LSR AL338E AND #$0F RTSL33n}91 LDX $87 LDY $88 JSR L366B JSR L3454 LDA ($87,X) TAY o}LSR A BCC L33AA ROR A BCS L33B4 CMP #$A2 BEQ L33B4 ANp}D #$87L33AA LSR A TAX LDA L346E,X JSR L3388 BNE L33B8L33B4 LDY q}#$80 LDA #$00L33B8 TAX LDA L34B2,X STA $82 AND #$03 STA $83 r} TYA AND #$8F TAX TYA LDY #$03 CPX #$8A BEQ L33D8L33CD s} LSR A BCC L33D8 LSR AL33D1 LSR A ORA #$20 DEY BNE L33D1t} INYL33D8 DEY BNE L33CD RTSL33DC JSR L3391 PHAL33E0 LDA ($87),Y Ju}SR L36AF LDX #$01L33E7 JSR L3456 CPY $83 INY BCC L33E0 LDX v} #$03 CPY #$04 BCC L33E7 PLA TAY LDA L34CC,Y STA $80 w}LDA L350C,Y STA $81L3401 LDA #$00 LDY #$05L3405 ASL $81 ROL $80 x} ROL A DEY BNE L3405 ADC #$3F JSR L36C2 DEX BNE L3401 y} JSR L3454 LDY $83 LDX #$06L341C CPX #$03 BEQ L343CL3420 ASL $82 z} BCC L3432 LDA L34BF,X JSR L36C2 LDA L34C5,X BEQ L3432 JSR {} L36C2L3432 DEX BNE L341C RTSL3436 DEY BMI L3420 JSR L36AFL343C LDA |} $82 CMP #$E8 LDA ($87),Y BCC L3436 JSR L3462 TAX INX }} BNE L344C INYL344C TYA JSR L36AF TXA JMP L36AFL3454 LDX #$03L3456 ~}LDA #$20 JSR L36C2 DEX BNE L3456 RTSL345F SECL3460 LDA $83L3462 LDY } $88 TAX BPL L3468 DEYL3468 ADC $87 BCC L346D INYL346D RTSL34}6E DB $4,$20,$54 DB $30,$D DB $80,$4,$90 DB $3,$22 DB $54,$33,$D } DB $80,$4 DB $90,$4,$20 DB $54,$33 DB $D,$80,$4 DB $90,$4 } DB $20,$54,$3B DB $D,$80 DB $4,$90,$0 DB $22,$44 DB $33,$D,$C8} DB $44,$0 DB $11,$22,$44 DB $33,$D DB $C8,$44,$A9 DB $1,$22} DB $44,$33,$D DB $80,$4 DB $90,$1,$22 DB $44,$33 DB $D,$80,$}4 DB $90 DB $26,$31,$87 DB $9AL34B2 DB $00 DB $21 DB } $81 DB $82 DB $00 DB $00 DB $59 DB $4D DB $91} DB $92 DB $86 DB $4A DB $85 DB $9DL34C0 DB ',),#($}'L34C6 DB 'Y',0,'X$$',0L34CC DB $1C,$8A,$1C DB $23,$5D,$8B DB $1B,$A1,$9D }DB $8A,$1D,$23 DB $9D,$8B,$1D DB $A1,$0,$29 DB $19,$AE,$69 DB $A8,$1}9,$23 DB $24,$53,$1B DB $23,$24,$53 DB $19,$A1 DB $0,$1A,$5B DB } $5B,$A5,$69 DB $24,$24 DB $AE,$AE,$A8 DB $AD,$29,$0 DB $7C,$0 } DB $15,$9C,$6D DB $9C,$A5,$69 DB $29,$53 DB $84,$13,$34 DB $11,$A5,}$69 DB $23,$A0L350C DB $D8,$62,$5A DB $48,$26,$62 DB $94,$88,$54 DB } $44,$C8,$54 DB $68,$44,$E8 DB $94,$0,$B4 DB $8,$84,$74 DB $B4,$28,$6E} DB $74,$F4,$CC DB $4A,$72,$F2 DB $A4,$8A DB $0,$AA,$A2 DB $}A2,$74,$74 DB $74,$72 DB $44,$68,$B2 DB $32,$B2,$0 DB $22,$0 DB } $1A,$1A,$26 DB $26,$72,$72 DB $88,$C8 DB $C4,$CA,$26 DB $48,$44,$44 } DB $A2,$C8 DB $FF,$FF,$FF ***TRACER MODULE***L354F JSR L33DC PLA STA } $80 PLA STA $81 LDX #$08L355A LDA L361C,X STA $8A,X DEX }BNE L355A LDA ($87,X) BEQ L35A8 LDY $83 CMP #$20 BEQ L35C5 } CMP #$60 BEQ L35B5 CMP #$4C BEQ L35D0 CMP #$6C BEQ L35D}1 CMP #$40 BEQ L35B1 AND #$1F EOR #$14 CMP #$04 BEQ L}3586L3584 LDA ($87),YL3586 STA $8A,Y DEY BPL L3584 JSR L3794 JMP $8}A STA $94 PLA PHA ASL A ASL A ASL A BMI L359E } JMP L37F4L359E PLP JSR L37A1 PLA STA $87 PLA STA $88L35A8 }JSR L3391 JSR L35E6 JMP L37F4L35B1 CLC PLA STA $97L35B5 PLA STA} $87 PLAL35B9 STA $88L35BB LDA $83 JSR L3462 STY $88 CLC BC}C L35D9L35C5 CLC JSR L3460 TAX TYA PHA TXA PHA LDY #$0}2L35D0 CLCL35D1 LDA ($87),Y TAX DEY LDA ($87),Y STX $88L35D9 STA $87} BCS L35D0 LDA $81 PHA LDA $80 PHAL35E3 JSR L3662L35E6 LDA }#$94 STA $8E LDA #$00 STA $8F LDX #$FBL35F0 LDA #$20 JSR L}36C2 LDA L352A,X JSR L36C2 LDA #$3D JSR L36C2 LDA $99,X J}SR L36AF INX BMI L35F0 RTSL3609 CLC LDY #$01 LDA ($87),Y J}SR L3462 STA $87 TYA SEC BCS L35B9L3617 JSR L379F SEC BCS } L35BB NOP NOP JMP L3617 JMP L3609L3625 DB 'AXYPS'L362A INC $90 } BNE L3630 INC $91L3630 LDA $8A CMP $8C LDA $8B SBC $8D } INC $8A BNE L363E INC $8BL363E RTS LDA #$00 STA $97 RTS }***INPUT MODULE***L3644 LDX #$00 LDA #$05 STA ICCOM,X LDA #$82 STA IC}BAL,X LDA #$38 STA ICBAH,X LDA #$60 STA ICBLL,X LDA #$00 }STA ICBLH,X JSR LE456L3662 LDA #$9B JMP L36C2 ***HEX OUT MODULE***L3667 LDY $8}B LDX $8AL366B JSR L3662 JSR L344C LDY #$00 LDA #$2D JMP L}36C2L3678 LDA $8A ORA #$07 STA $8C LDA $8B STA $8DL3682 LDA $8A} AND #$07 BNE L368BL3688 JSR L3667L368B LDA #$20 JSR L36C2 LDA }($8A),Y JSR L36AF JSR L3630 BCC L3682 RTSL369B LSR A BCC L3688} LSR A LSR A LDA $8C BCC L36A6 EOR #$FFL36A6 ADC $8A } PHA LDA #$3D JSR L36C2 PLAL36AF PHA LSR A LSR A LSR } A LSR A JSR L36BA PLA AND #$0FL36BA ORA #$30 CMP #$3A } BCC L36C2 ADC #$06 This module falls into the next one. ***OUTPUT MODULE***L36C2 } STY $86 STX $89 STA L3712 LDA L3713 BEQ L36EC LDX #$10 } LDA #$0B STA ICCOM,X LDA #$12 STA ICBAL,X LDA #$37 STA ICB}AH,X LDA #$01 STA ICBLL,X LDA #$00 STA ICBLH,X JSR LE456L36EC }LDX #$ LDA #$0B STA ICCOM,X LDA #$12 STA ICBAL,X LDA #$37 } STA ICBAH,X LDA #$01 STA ICBLL,X LDA #$00 STA ICBLH,X JSR } LE456 LDY $86 LDX $89 LDA L3712 RTSL3712 DB 1L3713 DB 1 } ***SUBROUTINE MODULE*** This module must all be on the same page!L3714 DEC $85 BNE L371F } JMP L3678 JSR L37AE RTSL371F DEX BNE L373B CMP #$3A BEQ L}3729 JMP L369BL3729 STA $84 LDA $8C STA ($8E),Y INC $8E BNE } L3735 INC $8FL3735 RTS LDY $85 LDA L3881,YL373B STA $84 RTS L}DX #$01L3740 LDA $8C,X STA $90,X STA $92,X DEX BPL L3740 RTSL}374A LDA ($8A),Y STA ($90),Y JSR L362A BCC L374A RTS JSR L376B} LDA #$14L3759 PHA JSR L33DC JSR L345F STA $87 STY $88 }PLA SEC SBC #$01 BNE L3759 RTSL376B TXA BEQ L3775L376E LDA $8A,}X STA $87,X DEX BPL L376EL3775 RTS JSR L376B JSR L3794 JMP} ($87)L377F JMP L35E3 DEC $85 JSR L376B JMP L354F JSR L3714 } PLA PLA BNE L37F4 JMP (DOSVEC)L3794 LDA $97 PHA LDA $94 }LDX $95 LDY $96 PLP RTSL379F STA $94L37A1 STX $95 STY $96 P}HP PLA STA $97 TSX STX $98 CLD RTS ***PRINTER CONTROL MODULE***}L37AE LDX #$10 LDA #$03 STA ICCOM,X LDA #$E2 STA ICBAL,X LDA } #$37 STA ICBAH,X LDA #$08 STA ICAX1,X LDA #$00 STA L034B,X } JSR LE456 LDX #$01 STX L3713 RTSL37D2 JSR L3662 LDX #$10 L}DA #$0C JSR LE456 LDX #$00 STX L3713 RTSL37E2 DB 'P',$9B ***COMM}AND MODULE***L37E4 LDY #$15L37E6 LDX #$7FL37E8 STX LD01F STX LD40A DEX BPL } L37E8 DEY BPL L37E6L37F4 CLD LDA L3713L37F8 BEQ L37FD JSR L37D2L37}FD JSR L3662 LDA #$5D JSR L36C2 JSR L3644 JSR L385FL380B JSR L38}3F STY $85 LDY #$0FL3812 DEY BMI L37E4 CMP L3864,Y BNE L3812 } JSR L3856 LDY $85 JMP L380BL3822 LDX #$03 ASL A ASL A } ASL A ASL AL3828 ASL A ROL $8C ROL $8D DEX BPL L3828L3}830 LDA $84 BNE L383A LDA $8D,X STA $8B,X STA $8F,XL383A INX } BEQ L3830 BNE L3845L383F LDX #$00 STX $8C STX $8DL3845 LDA L3882,Y } INY EOR #$30 CMP #$0A BCC L3822 ADC #$88 CMP #$FA BC}S L3822 RTSL3856 LDA #$37 PHA LDA L3873,Y PHA LDA $84L385F LDY } #$00 STY $84 RTSL3864 DB $EB,$E9,$EA,$ED,$EC DB $A6,$A4,$06,$95,$05 DB } $00,$93,$A7,$34,$99L3873 DB LOW L377F-1 DB LOW L371B-1 DB LOW L3791-1 DB } LOW L3782-1 DB LOW L3783-1 DB LOW L3735-1 DB LOW L3735-1 DB LOW L3749-1} DB LOW L373D-1 DB LOW L3753-1 DB LOW L3775-1 DB LOW L3735-1 DB } LOW L3735-1 DB LOW L3789-1 DB LOW L371E-1L3882 DS $80DB LOW L3735-1 DB \Y E N0 ./`$ E L Nl NL ` $)`Eغ Q)Z[}jk ) @< H h̤ ) դHȹդH`hd} Zg 5c ȄT} 0 )U ٥)J N W8 NiԐ WO D܄ Dڄ۠} Ԅ ұԐĤڠHܑh܈0ПL 輠`XYԄ`i(ԝ՝` )w }! ǣà ) 54TU S LT L9CD  L?LLT8}) ǣɛ ǣP"Eɛ 礑ɛ У 0 à }Z 5BHI  LTHܽI Qڥ0 J 7 BܝHݝI 0}00 LL B;DE/ȱ)ȩ BDEH)I V0` `Hn Dh} LгԄՠޱ `LL N 0bLU`U ~ ֣ L/0@Hޱ:}ުi椨gުi1`Lw`1 2 8 Era Rename Bload Move Cart @DOSD}1:D1:*.* Error > > > FROM > TO > FROM disk? TO disk? Right? 128ERBMC@___{p}á$$  CDii$i%i l 0 A1Τ  % ND lBASWDG 4}.86 don lebowRESERVED MEMORY:$1CFC-$1D59 (7420-7513)RESET:TEXT 7450 BACK 7452KEY DE}LAY 7460 KE$%Y REPEAT 7462CONFIRM ('Right?' prompt): CANCEL with BRK,ESC, or 'N' any other key to GOBIGBLOCK:$1D5A-}$23FF (7514-9215) is FREELOMEM SHADOWS: 7470,7471 POKE value, RESET, and NEW NEVER SET BELOW $1D5A (90,29)!k$Ԅՠ} `$ELOMEM SHADOWS: 7470,7471 POKE value, RESET, and NEW NEVER SET BELOW $1D5A (90,29)!k$Ԅՠ WHY? BASWDG is not The Ultimate Program.Just a modest effort to make my XE alittle friendlier for Basicp}rogramming.We got: -Quick access to Disk Functionswithout using DUP.SYS. Tricks includean alphabetized directory. Wit}h DOS 2.5, if you DON'T have D8installed, you're right back in theBad Old Days, aren't you? If you DOhave it, no bank swit}ching. Why shouldyou be forced to make the choicebetween convenience and power? -An easy way to change LOMEM inmid-sessi}on to meet different programrequirements. Setting a protectedblock in low memory is an alternativeto the venerable PEEK (1}06). It makesfor fewer hassles, ESPECIALLY sinceyou can shrink or expand it at will. -Low Free RAM consumption while doin}gthe above. If you eliminate Bigblock,you'll find BASWDG takes up only 80bytes or so. NITTY GRITTY BASWDG S}HOULD ONLY BE USED WITH DOS 2OR 2.5 IN A 'DEFAULT' SETUP (2 drivesplus optional D8.) STARTING ADDRESS IS$1CFC (7420) RENAM}E THE DOWNLOADEDFILE AUTORUN.SYS NUMBERS Critical Memory values are noted onthe title screen. BASWDG.HLP }has thesame info for quick reference. ABSOLUTELY RESERVED MEMORY Starting at $1CFC, this block isquite small. It sh}ould NEVER, EVER, beoverwritten. BASWDG runs in the noted block of'shadow RAM', UNDER the internal BasicROM. When you ca}ll it by typing DOS,Basic is disabled, and BASWDG runs.Exit, RAM turns back to ROM, andyou're READY. NOTE: Page Six, the} Tape Buffer, theMagic Zero Page Free Bytes, and thebottom of the stack are left alone. OPTIONAL RESERVED MEMORY B}IGBLOCK is a large chunk of RAM thatis reserved at boot up time. It's'Protected', just like Page Six. Someuses: -Since t}here's an even boundary, andLOTS of room, you can install acharacter set or single line PMgraphics. -If you're an ML pro}grammer, you canuse it for stand alone routines (seeWDGREN.BIN) or subroutines for Basicprograms. The Bload command makes}shuttling in code easy. -Hardcore hackers can even use it forstuff that normally requires'AUTORUN'files, like device hand}lers. LOMEM Best of all, you can change the sizeof Bigblock at will. ELIMINATE it formaximum FRE(0). Or }EXPAND it to makeroom for double line PM, PLUS acharacter set, etc. EndlessPossibilities! POKE the BASWDG LOMEM shadows }withyour new 'bottom' of Basic memory(lo/hi), RESET, then NEW. (Don'tforget the NEW which resets Basicpointers.) For sim}plicity, keep the lo byte at0, and use Page Numbers for hi.NEVER SET LOMEM LOWER THAN THE LIMITSNOTED ON THE TITLE SCREEN}. DOING SOWILL SEND YOUR COMPUTER TO THE LAND OFLOST BYTES! HELLO To enter BASWDG, type DOS. Once inthe} menu, access a command by pressingthe appropriate key (RETURN notnecessary.) DIRECTORY Type the drive num}ber. DEFAULT DRIVE The Default is the drive that doesn'tneed a Device Spec (eg. D1:) whentyping in file name}s. In DUP.SYS, theDefault is always D1: In the BASWDGmenu, things are more flexible. THE BASWDG DEFAULT DRIVE IS THE LAST}DRIVE FROM WHICH YOU READ ADIRECTORY. The intent is to default to the drivewhose files are currently listed onthe scree}n. This can be confusinguntil you get used to it. So there area couple of helps: D: is always translated to D1: Thisext}ends to other devices,too. E:=E1:,P:=P1:, etc. The FULL FILESPEC, as translated, isprinted on the screen. LOOK AT IT! If}it's not what you intended, you canbail out. CHANGED YOUR MIND? The all purpose Quit Key is BREAK. Atany promp}t, pressing it will exit tothe menu. BREAK disabled? There are a couple ofalternatives: FOR FILE NAME INPUT: you can Qu}itwith a 'Null Input'. Press RETURN ONLYwith no name. AT ANY OTHER PROMPT: you can abort byhitting ESCape. } CONFIRM Before BASWDG acts, it will ask youto CONFIRM. Two options: 1) Want to quit? Hit BREAK or ESC. 2) Go ahead?} Any other key. FILE COMMANDS These are E (Erase), R (Rename), B(Bload), and M (Move File) At thecommand pro}mpts, INPUT the filename(remember, no device spec needed ifyou're using the DEFAULT.) Abort bypressing RETURN only, or BRE }AK. ERASE zaps the selected file. RENAME works in the normal fashion.Type the old name, a comma, and thenew name. Sorr }y, you STILL have towatch out for duplicate names (don'tblame me..I'm just using XIO 32!) UseRENAME with the target direct }ory onthe screen to make sure you're notdoing something nasty. BLOAD works like the L command inDUP.SYS, and is only for } Binary(Machine Language) files. If INIT orRUN addresses are used, they WILL beexecuted. Terminal RTS returns to theBASWD }G menu. When you Bload, be careful ofoverwriting vital memory. If you haveany doubts about an object file,(L)OAD it from }DUP.SYS. Please makesure that any Custom Interrupts areINACTIVE if you exit to DUP.SYS The Bload function uses the reside}ntDOS 2.x routine, SFLOAD. To civilizeit, a small patch is installed(details on request.) This is ONLY inplace while BASW}DG is running. Thatmeans it is ALSO in effect during anyINIT or RUN of Bloaded files.DO NOT 'WRITE DOS' WHEN THE PATCH IS}IN PLACE! DON'T PANIC. The patch ISAUTOMATICALLY REMOVED on exit to Basic(C), exit to DUP.SYS (@), and RESET. If your }bloaded file uses SFLOAD, itmay not work properly (hasn't happenedto me, but you never know) BLOAD FUNSinc}e Basic is disabled during BLOAD,the SHADOW RAM IS OPEN FOR LOADINGCODE. (Don't zap BASWDG!) Of course,you can't use it wh}ile Basic isrunning (or can you?) There's 6k+ ofshadow RAM down there. MOVE IT! The MOVE command combines }thefunctions of COPY FILE (C) andDUPLICATE FILE (O) in the DUP.SYSmenu. It's Especially Useful with D8.MOVE uses 'Free RA}M', starting at thetop of your program, for its buffer(do you have data up there? Careful.)The smaller your program the bi}ggerthe buffer. (Error 2 means your RAM isfull!) There are SEPARATE PROMPTS for FROMand TO filenames. Remember to use th}eDefault to cut down on typing. Any legal device (E:, P:, C:, D:) canbe used. If you don't specify anumber, 1 is assigne}d. THE LEYENBERGER OPTION If you want to use the SAME FILE NAMEfor both files, then you can type ONLYthe Devic}e Spec (INCLUDING THE COLON!)at the TO prompt. The FROM file namewill be appended. COPY or DUPLICATE? COPY FILE} (no swaps) is automaticallyassumed with files going to E: or P:.Otherwise MOVE checks the DeviceNumber for FROM and TO. I}f both usethe SAME number, MOVE assumes aDUPLICATE FILE, and will prompt youfor swaps. Swap prompts work like CONFIRM.B}REAK/ESC to exit, or key to continue.Depending on exactly where you are inthe process, an exit may leave youwith a partial} file on the TO disk.Erase as necessary. For severeproblems, (inserted the wrong disk?)use DISKFIX.COM. EXITING} THE WEDGE Cart exits to Basic. To go all the way and exit toDUP.SYS, type @ (SHIFT-8.) That'sintentionally a two-finge }r combo, toavoid accidents. DUP.SYS NOTES I try to avoid DUP.SYS, but sometimesit's necessary (DISKFIX!) I!}F MEM.SAV IS ACTIVE WHEN YOU EXITDUP.SYS WITH THE B COMMAND, BASWDG isstill there. However, it has beenunhooked (safety fi"}rst) To rehook it: From BASIC, POKE 12,252: POKE 13,28 Now RESET. BASWDG is back. Do thisBEFORE any drastic action like #}aRESET, LOAD, or NEW. DO make sure that MEM.SAV hasrestored the RAM. LIST if you're notsure. Remember that using options $}Cand O in DUP can zap MEM.SAV (That'swhy I wrote MOVE) IF MEM.SAV IS NOT ACTIVE, you canusually Reload BASWDG with the L%}command. If in doubt, reboot. Running DUP.SYS on D8 with noMEM.SAV, alters the sector count forthat file(??) Beats me. E&}ven if itsays DUP.SYS is taking up 156 sectors,it's really only using 42, asconfirmed by FREE SECTORS. So far,this seems '}harmless. RESET DEFAULTS These control values implemented oneach RESET. TEXT and BACK set 709 and710 respecti(}vely. KEY DELAY and KEYREPEAT are for 729 and 730. OKAY, IT'S A LITTLE ROUGH AROUND THEEDGES. DOES THE JOB, THOUGH. THE W)}HOLEWORLD IS A BETA TEST. EMAIL COMMENTSTO 70717,720don ES THE JOB, THOUGH. THE W*d BASWDG 2.86 uses the resident DOS 2.x routine, SFLOAD for it's bload. To avoid problems, a small patch is installed (det+}ails on request.) This is ONLY in place while the Wedge is running. That means it is ALSO in effect during any INIT or RUN,} of Bloaded files. DO NOT 'WRITE DOS' WHEN THE PATCH IS IN PLACE! Don't Panic. The patch IS REMOVED AUTOMATICALLY -}on exit to Basic (C), DUP.SYS (@), and RESET. If your bloaded file uses SFLOAD, it may not work properly (never happene.}d to me, but you never know) The answer is the same as for files that can't be bloaded because of memory conflicts, or/} those that you're just not sure about. (L)OAD them from DUP.SYS. As always, please make sure that any Custom Interrup0}ts are INACTIVE when you exit to DUP! don se make sure that any Custom InterrupW xMEMIMABOSIZLHNBONSIZAtpAuBS`Au 2} %%alter LOMEM..BASWDG 2.86 ONLY!!HHan arbitrary upper limit is set at page 60..alter MAX if necessaryBBWA3}RNING: THIS PROGRAM SELF-DESTRUCTS! reset is not necessary(2o(}BASWDG 2.86 LOMEM)6-Atp56-AuI6-@`4}$AVg6-F:,%F:%@,$AVo6-&<^(&(Minimum Value: 7514 (90,29))(^(Current Value:  (F:,5},F:%@,)F%(%(Reserving:  BytesPO(( NEW LOMEM:"(LO BYTE&3(HI BYTE7G6-%AV6}$O6-&Z  (Too Low @`d !(Too High @`nU((,)8( Reserving  B7}ytes;(F(OKAY?UY to confirmxd@.@@K:;)@F@d@*A!8}@`J ((LOMEM altered...$2%@>ACJADaloha..don D:LOMEM.BAS!y10 .OPT NO LIST20 ;30 ;XE BASIC WEDGE 2.8640 ;DOS 2.x/internal basic rom50 ;60 ;don lebow [70717,720]70 ;80 ;90!:} **0100 BOOT? = $090110 DOSVEC = $0A0120 DOSINI = $0C0130 COLDST = $02440140 RUNAD = $02E00150 DINIT = $02E2!;}0160 MEMLO = $02E70170 SFLOAD = $15A4 ;internal bload0180 LOADZONE = $1DF4 ;default buffer0190 **0200 PATCH1 = $15!<}CB0210 PATCH2 = $15D00220 PATCH3 = $15EE0230 PATCH4 = $15F30240 **0250 LBUFF = $05800260 DIRTAB = LBUFF+$20 ;sor!=}t buffer0270 INBUFF = $F30280 **0290 ICCOM = $03420300 ICSTA = $03430310 ICBADR = $03440320 ICBLEN = $03480330 ICAU!>}X1 = $034A0340 NUM1AUX = ICAUX1+$10 ;#1 aux0350 CIOV = $E4560360 **0370 OPEN = $030380 READ = $040390 GE!?}TREC = $050400 GETCHAR = $070410 WRITE = $080420 PUTREC = $090430 PUTCHAR = $0B0440 CLOSE = $0C0450 RENAME = $200460 E!@}RASE = $210470 BLOAD = $29 ;ghost of dos 3!0480 *堰*0490 FR0 = $D40500 Z1 = $DA ;wedge temps0510 Z2 = !A} Z1+20520 LEN = Z1+40530 COUNT = $F50540 HOLD1 = COUNT+10550 HOLD2 = COUNT+20560 FLAG = COUNT+30570 FILENUM = COUNT!B}+40580 BUFFLEN = $FC0590 HOLDBUF = $FE0600 **0610 PORTB = $D3010620 CVFPA = $D8E6 ;fp to asc0630 CVIFP = $D9AA !C};integer to fp0640 ZFR0 = $DA440650 INTLBF = $DA510660 EPUT = $E406 ;E: put byte0670 KGET = $E424 ;K: get byte068!D}0 **0690 TXT = $02C5 ;text color0700 BAK = $02C6 ;background0710 ROWCRS = $540720 COLCRS = $550730 CRSINH !E}= $02F00740 **0750 INVFLG = $02B60760 SHFLOK = $02BE0770 KRPDEL = $02D90780 KEYDEL = $02DA0790 **0800 LINEN!F}D = 0 ;end print0810 PROGTOP = $90 ;end basic program0820 CR = $9B ;RETURN0830 MEMTOP = $02E5 ;end free ram!G}0840 ;0850 **0860 ;label ADDRESS to a,y0870 ;GETADR (of) LABEL0880 .MACRO GETADR 0890 LDA # <%10900 !H}LDY # >%10910 .ENDM 0920 ;WORD to a,y0930 ;GETWORD (from) LABEL0940 .MACRO GETWORD 0950 LDA %10960 LDY !I}%1+10970 .ENDM 0980 ;a,y WORD to label0990 ;STORWORD (to) LABEL1000 .MACRO STORWORD 1010 STA %11020 STY!J} %1+11030 .ENDM 1040 ;text print..max 256 characters..terminate with 01050 ;PRINT LABEL1060 .MACRO PRINT 1070 !K} GETADR %11080 JSR SHOWME1090 .ENDM 1100 ;insert OS vector1110 ;OSVEC [from] VECTOR ,[to] LABEL1120 .MACR!L}O OSVEC 1130 .IF %0<>21140 .ERROR "OSVEC!"1150 .ELSE 1160 CLC 1170 LDA %11180 ADC #!M}11190 STA %2+11200 LDA %1+11210 ADC #01220 STA %2+21230 .ENDIF 1240 .ENDM 1250 ;126!N}0 ;1270 ;protected RAM code1280 ;1290 .ORG $1CFC1300 **1310 RESET1320 JSR $FFFF ;DOS init1330 JSR B!O}ASOFF ;open shadow ram1340 JSR BASON ;to off patch1350 SHADOWS1360 GETADR WEDGE ;set1370 STORWORD DOSV!P}EC ;DOS vector1380 GETWORD SAVEMEM ;set1390 STORWORD MEMLO ;lomem1400 LDA #0 ;set1410 LDY #$9C !Q} ;colors1420 STORWORD TXT1430 LDA #$15 ;debounce1440 LDY #$03 ;repeat1450 STA KRPDEL1460 ST!R}Y KEYDEL1470 RTS ;bye1480 SAVEMEM1490 .WORD NEWLO ;lomem shadow1500 ;1510 **1520 WEDGE1530 !S} JSR BASOFF ;turn off basic rom1540 JSR PATCHON ;patch sfload1550 JMP DOWEDGE ;run the wedge1560 **!T}1570 GOBAS1580 JSR BASON ;turn on basic1590 JMP ($BFFE) ;do warmstart1600 GODUPSYS1610 JSR BASON1620 DUPE!U}XIT1630 JMP $FFFF ;go run dup.sys1640 ;1650 **1660 ;1670 BASOFF1680 LDA PORTB1690 ORA #$02!V} ;bit 1=11700 STA PORTB1710 RTS 1720 ;1730 BASON1740 .OPT LIST1750 JSR PATCHOFF ;restore sfload1760!W} LDA PORTB1770 AND #$FD ;bit 1=01780 STA PORTB1790 RTS 1800 .OPT NO LIST1810 *!X}*1820 *= DINIT1830 .WORD BASOFF1840 ;1850 ;**1860 ;1870 .ORG $A000 ;heh1880 ;1890 DOWEDGE!Y}1900 TOP1910 CLD 1920 TSX ;save stack pointer1930 STX HOLDSTACK1940 JSR INTLBF ;set lbuff pointe!Z}r1950 ;1960 AND #0 ;just in case..1970 STA NUM1AUX ;clear aux bytes1980 STA NUM1AUX+1 ;#11990 STA N![}UM1AUX+$10 ;#22000 STA NUM1AUX+$112010 LDX #$102020 JSR CLOSEME ;close #12030 JSR CLOSE2 ;close #22040 !\} STY CRSINH ;no cursor2050 AND #02060 STA INVFLG ;no inverse2070 ORA #$402080 STA SHFLOK ;all caps!]}2090 DOMENU2100 PRINT MENU ;command line2110 JSR GETKEY ;well?2120 **2130 PHA ;'scuse !^}me2140 JSR ZAPLINE ;clear menu2150 PLA ;retrieve key2160 TAX ;save2170 ;2180 LDY #JMPTAB!_}LE-KEYTABLE-1 ;number of legal keys2190 NUMLOOP2200 CMP KEYTABLE,Y ;match?2210 BEQ FOUNDKEY ;yup2220 DEY !`} ;no2230 BPL NUMLOOP2240 EXIT12250 JSR UPONE ;start2260 BPL TOP ;over2270 ;2280 **2290 !a}FOUNDKEY2300 CPY #3 ;directory?2310 BCC D1 ;yes2320 AND #0 ;no2330 STA CRSINH ;turn on cu!b}rsor2340 D12350 TYA ;y2360 ASL A ;*22370 TAY ;indexes jmptable2380 LDA JMPTABLE,Y !c};hi byte of routine address2390 PHA 2400 INY 2410 LDA JMPTABLE,Y ;lo byte2420 PHA 2430 RTS ;!d}go run routine2440 **2450 DODIR2460 STX DRIVE+1 ;set number for dos2470 STX DEFAULT+1 ;and title2480 !e} LDA #$7D ;clear screen2490 JSR POPCHAR2500 DIRAUX2510 LDY #7 ;dos 2.52520 STY NUM1AUX2530 STUFFIT!f}2540 LDA DRIVE,Y ;directory spec2550 STA (INBUFF),Y ;to lbuff2560 DEY 2570 BPL STUFFIT2580 LDA #OPEN !g} ;open directory2590 JSR ICHIBAN ;kudasai2600 **2610 PRINT DEFAULT ;show drive2620 STA COUNT!q} B%DOS SYSB*)DUP SYSB SMONITOR BINB^MONITOR DOCBklMONITOR SRCBBASWDG BINBJBASWDGE DOCB1BWDGLO BINB9BASWDG SRCBWDGREN BINBCONVERT BASb CONVERT DOCB1@MULTICPYBASBqRAINBOW BASBMENU B,DEREZ BINAUTORUN SYS ;init filecount at 02630 TAY 2640 INY 2650 STY ROWCRS ;start at row 12660 READER2670 LDX #$102680 !r} JSR GETLINE ;get filename2690 BMI GOTIT ;end of directory2700 LDY #$12 ;default length2710 INC COUNT2!s}720 LDA COUNT2730 AND #$01 ;check column2740 BNE COL1 ;left side2750 LDA #$14 ;right side2760 !t} BNE PRINTNAME2770 COL12780 DEY ;to strip CR2790 LDA #12800 PRINTNAME2810 STA COLCRS ;set position!u}2820 LDA #LINEND2830 STA (INBUFF),Y ;terminate print line2840 GETWORD INBUFF ;point2850 JSR SHOWME ;an!v}d print2860 BPL READER ;always2870 **2880 GOTIT2890 LDA COUNT ;how many names?2900 CMP #1 !w} ;not enough2910 BEQ EXIT12920 CMP #$29 ;too many2930 BCS EXIT12940 LSR A ;divide by 22950 !x} STA HOLD12960 STA HOLD22970 JSR FINDSCREEN ;init pointers2980 LDX #02990 JSR MAKETABLE ;first column3!y}000 LDA COUNT3010 SEC 3020 SBC HOLD2 ;remainder in second column3030 STA HOLD13040 JSR FINDSCREEN3!z}050 LDA FR03060 CLC 3070 ADC #$13 ;offset to second column3080 STA FR03090 BCC FINISH3100 INC!{} FR0+13110 FINISH3120 JSR MAKETABLE3130 **3140 SORTINIT3150 LDY #03160 STY FLAG ;clear p!|}ass3170 LDY COUNT3180 DEY ;0 offset3190 DEY ;ignore 'FREE SECTORS'3200 STY FILENUM ;maste!}}r counter3210 ;sort loop3220 NEXTPAIR3230 LDA FILENUM3240 BEQ CHECK ;pass completed3250 JSR FINDME ;addre!~}ss of 'bottom' string3260 STORWORD Z2 ;to pointer3270 DEC FILENUM3280 LDA FILENUM3290 JSR FINDME ;and !}the 'top' one3300 STORWORD Z13310 LDY #2 ;init pointer3320 STY HOLD23330 CHEKTOP3340 INY !};top first3350 CPY #$0D3360 BCS YOURTURN ;end search3370 LDA (Z1),Y3380 BEQ CHEKTOP ;ignore spaces3390 !} STA FR0 ;save char3400 YOURTURN3410 STY HOLD1 ;hold index3420 LDY HOLD2 ;bottom name3430 CHEKBOT3440 !} INY ;as above3450 CPY #$0D3460 BCS NEXTPAIR3470 LDA (Z2),Y3480 BEQ CHEKBOT3490 STY HOLD2!} ;hold index3500 CMP FR0 ;compare3510 BCC SWAP ;got one!3520 BEQ NEXTCHAR ;try again3530 BCS NEX!}TPAIR ;move on3540 NEXTCHAR3550 LDY HOLD13560 BPL CHEKTOP ;always3570 SWAP3580 LDY #$113590 STY FLAG !} ;pass not clear3600 MOVECHAR3610 LDA (Z1),Y3620 PHA 3630 LDA (Z2),Y ;new character3640 STA (Z1),Y ;mo!}ves up3650 PLA ;old character3660 STA (Z2),Y ;moves down3670 DEY 3680 BPL MOVECHAR3690 BMI !}NEXTPAIR3700 CHECK3710 LDA FLAG ;clear pass?3720 BNE SORTINIT ;no3730 EXIT23740 JMP TOP ;dot's it375!}0 **3760 FINDME3770 ;entry: a=filenum..exit: a,y=screen address3780 ;3790 ASL A ;index*23800 TAX !}3810 LDA DIRTAB,X ;low byte3820 INX 3830 LDY DIRTAB,X ;high byte3840 RTS ;slick3850 ;3860 FINDS!}CREEN3870 ;load pointers to top of screen ram3880 GETWORD $58 ;point to start of screen ram3890 STORWORD FR03!}900 RTS ;thank you3910 ;3920 MAKETABLE3930 ;construct address table for file names in screen ram3940 ;entry: !}FR0=screen address, HOLD1=number of entries to add3950 ;x=table index..on exit:x=last table entry+13960 ;3970 ADDMORE3980!} LDA FR0 ;current address3990 CLC 4000 ADC #$28 ;down one line4010 STA FR04020 STA DIRTAB,X ;t!}o table4030 BCC HIGH4040 INC FR0+14050 HIGH4060 INX 4070 LDA FR0+14080 STA DIRTAB,X4090 INX 4!}100 DEC HOLD1 ;counter4110 BNE ADDMORE4120 RTS ;finished4130 **4140 ;4150 DOBLOAD4160!} PRINT XBLOAD ;'bload'4170 LDA #BLOAD4180 BNE DOXIO4190 ;4200 DOERASE4210 PRINT XERASE ;'erase'4220!} LDA #ERASE4230 BNE DOXIO4240 ;4250 DORENAME4260 PRINT XRENAME ;'rename'4270 LDA #RENAME4280 ;4290 D!}OXIO4300 STA HOLD1 ;save command4310 JSR GETNAME ;which file?4320 STY CRSINH ;no cursor4330 PRINT XC!}ONFIRM ;get4340 JSR WAITKEY ;confirmation4350 LDA HOLD1 ;retrieve command4360 CMP #BLOAD ;special case4370!} BEQ LOADME4380 ;4390 JSR ICHIBAN ;else XIO #14400 BPL EXIT3 ;errors trapped4410 ;4420 LOADME4430 LDA!} # LBUFF4460 STA ICBADR+$114470 JSR SFLOAD ;get it!}4480 LDY ICSTA+$10 ;check #1 status4490 CPY #1 ;ok?4500 BEQ EXIT3 ;yes4510 JMP ERROR ;show error!}4520 ;4530 **4540 DOCART4550 JSR UPONE4560 JMP GOBAS ;exit to basic4570 DODUP4580 GETWORD DUPEXIT!}+1 ;zap wedge4590 STORWORD DOSVEC ;by restoring4600 GETWORD RESET+1 ;default4610 STORWORD DOSINI ;vector!}s4620 JMP GODUPSYS ;aloha4630 EXIT34640 JMP TOP ;upvector4650 **4660 DOMOVE4670 ;init move buffer!}4680 ;4690 GETWORD PROGTOP ;top of program4700 INY ;bump for safety4710 CPY MEMTOP+1 ;room to move?!}4720 BCC SETBUFF ;yup4730 LDY #2 ;no room4740 JMP ERROR ;quit4750 SETBUFF4760 STORWORD HOLDBUF ;!}to pointer4770 LDA MEMTOP ;top of free ram4780 SEC 4790 SBC HOLDBUF ;start of buffer4800 STA BUFFLEN ;av!}ailable ram4810 LDA MEMTOP+14820 SBC HOLDBUF+14830 STA BUFFLEN+14840 ;init4850 AND #0 ;clear...486!}0 STA FLAG ;swap4870 STA HOLD1 ;status4880 STA HOLD2 ;dest open4890 ;get 'from' file4900 PRINT X!}MOVE ;'move'4910 JSR GETNAME4920 LDY #04930 MOVEFROM4940 LDA (INBUFF),Y ;move input4950 STA FROMNAME,Y ;!}to buffer4960 INY 4970 CMP #CR ;done?4980 BNE MOVEFROM ;no4990 ;get to5000 PRINT XTO ;'to'5010 !} JSR GETNAME5020 ;check device5030 LDA LBUFF ;destination5040 STA CRSINH ;zap cursor5050 CMP #'P ;pri!}nter5060 BEQ NOSWAP ;pass5070 CMP #'E ;editor5080 BEQ NOSWAP ;pass5090 ;same name?5100 CHEKSAME5110 !} LDY #35120 LDA (INBUFF),Y ;first character after spec5130 CMP #CR ;not5140 BNE CHEKSWAP5150 CLOOP5160!} LDA FROMNAME,Y ;append5170 STA (INBUFF),Y ;'from' name5180 INY 5190 CMP #CR5200 BNE CLOOP5210 J!}SR SHOWNAME ;Reprint5220 ;duplicate file (1 drive)?5230 CHEKSWAP5240 LDY #15250 LDA (INBUFF),Y ;device number526!}0 CMP FROMNAME,Y ;same for both?5270 BEQ READY ;yes5280 NOSWAP5290 ORA #$80 ;bit 7 set5300 STA FLAG !} ;=no swap5310 ;5320 **5330 READY5340 LDA FLAG ;swap?5350 BMI MSG2 ;no5360 MSG15370 PRIN!}T XFROMIN ;'FROM disk?'5380 BPL OPEN15390 MSG25400 PRINT XCONFIRM5410 OPEN15420 JSR WAITKEY ;standby5430!} GETADR FROMNAME ;'FROM'5440 STORWORD INBUFF ;to pointers5450 LDA #READ ;set5460 STA NUM1AUX ;aux54!}70 LDA #OPEN5480 JSR ICHIBAN ;open #1 for read5490 ;5500 READ15510 LDX #$10 ;#15520 LDA #GETCHAR5530!} STA ICCOM,X ;set command5540 LDA BUFFLEN5550 STA ICBLEN,X ;max len5560 LDA BUFFLEN+15570 STA ICBLEN+!}1,X5580 JSR LOADBUFFER ;do it5590 ;status?5600 CPY #1 ;read ok, not finished5610 BNE CHEKERR5620 ST!}Y HOLD1 ;flag more to read5630 BPL WRITE2 ;move on5640 CHEKERR5650 CPY #$88 ;eof..read complete5660 BNE!} COPYERR ;uh oh5670 STY HOLD1 ;show done5680 BEQ WRITE25690 COPYERR5700 STY HOLD1 ;save error5710 JS!}R CLOSE2 ;close #25720 LDY HOLD15730 JMP ERROR ;quit5740 ;5750 WRITE25760 LDA ICBLEN,X ;how many bytes ca!}me in?5770 STA Z2 ;save5780 LDA ICBLEN+1,X5790 STA Z2+15800 JSR INTLBF ;reset pointer5810 LDA !}FLAG ;swap?5820 BMI CHEKOPEN ;no5830 PRINT XTOIN ;'TO disk?'5840 JSR WAITKEY5850 ;5860 CHEKOPEN5870 !} LDX #$20 ;#25880 LDA HOLD2 ;file open?5890 BNE GOWRITE ;yes5900 LDA #WRITE ;set5910 STA ICAUX1,X !};aux5920 LDA #OPEN5930 JSR TOCIO ;open5940 STY HOLD2 ;and flag5950 ;5960 GOWRITE5970 LDA #PUTCHAR ;!}set5980 STA ICCOM,X ;command5990 LDA Z2 ;set6000 STA ICBLEN,X ;length6010 LDA Z2+16020 STA ICBL!}EN+1,X6030 JSR LOADBUFFER ;hello6040 BMI COPYERR ;oops!6050 LDA HOLD1 ;are we done?6060 BMI COPYEXIT ;y!}es6070 LDA FLAG ;swap?6080 BMI MOICHIDO ;no6090 PRINT XFROMIN ;prompt source6100 JSR WAITKEY6110 MO!}ICHIDO6120 JMP READ1 ;do it again!6130 ;6140 COPYEXIT6150 JMP TOP ;all done6160 ;6170 ;6180 *Ϡ!}*6190 ;6200 ;closers6210 CLOSE26220 LDX #$20 ;#26230 CLOSEME6240 LDA #CLOSE ;set6250 STA ICCOM,X ;com!}mand6260 BNE CIO2 ;close channel6270 ;6280 LOADBUFFER6290 ;entry: channel,length,command defined..buffer address i!}n holdbuf6300 ;6310 LDA HOLDBUF ;point to6320 STA ICBADR,X ;ram buffer6330 LDA HOLDBUF+16340 STA ICBADR+!}1,X6350 BNE CIO2 ;call cio6360 ;print asc number in lbuff6370 SHOWASC6380 LDY #$FF6390 L1 INY 6400 LDA !}(INBUFF),Y ;character6410 BPL L1 ;last one is inverse6420 AND #$7F ;strip6430 STA (INBUFF),Y ;and rest!}ore6440 INY 6450 LDA #CR ;set end6460 STA (INBUFF),Y6470 ;string printer6480 PRINTSTRING6490 LDA #P!}UTREC6500 LDX #0 ;to E:6510 BPL TOCIO6520 ;select #16530 ICHIBAN6540 LDX #$106550 *Ϡ*6560 ;!}entry: x=channel, a=command, inbuff=buffer address, aux bytes set, length=$806570 TOCIO6580 STA ICCOM,X ;set command65!}90 LDA INBUFF ;default address6600 STA ICBADR,X6610 LDA INBUFF+16620 STA ICBADR+1,X6630 LDA #$80 !};default len6640 STA ICBLEN,X6650 AND #06660 STA ICBLEN+1,X6670 ;alternate entry6680 CIO26690 JSR CIOV !} ;do it6700 BMI ERROR ;whoops!6710 RTS 6720 ;6730 **6740 ERROR6750 CPY #$80 ;BREAK?676!}0 BEQ CLEANEXIT ;can handle6770 CPY #$88 ;eof?6780 BNE SHOWERR ;no problem6790 ORA #$80 ;set N bit6!}800 RTS 6810 ;6820 SHOWERR6830 TYA 6840 PHA ;save error6850 PRINT XBUG ;attention!6860 JS!}R ZFR0 ;clear6870 PLA ;retrieve6880 STA FR0 ;for translation6890 JSR CVIFP ;to fp6900 JS!}R CVFPA ;to asc6910 JSR SHOWASC ;print it6920 ;loose ends6930 CLEANEXIT6940 LDX HOLDSTACK ;clear6950 TXS !} ;stack6960 JMP TOP ;start over6970 ;6980 **6990 GETINPUT7000 LDX #0 ;input from E:7010 GET!}LINE7020 LDA #GETREC ;input string7030 BNE TOCIO7040 ;7050 **7060 SHOWME7070 ;single characters..en!}try: a,y=text address (256 characters max)7080 ;exit: a=07090 ;7100 STORWORD FR0 ;set pointer7110 LDY #07120 P!}OPONE7130 STY LEN ;save index7140 LDA (FR0),Y ;get character7150 BEQ PRINTED ;end of text7160 JSR POP!}CHAR ;print char7170 LDY LEN ;get index7180 INY 7190 BNE POPONE ;always7200 PRINTED7210 RTS 7220 ;!}7230 **7240 UPONE7250 LDA #$1C ;cursor up7260 ;7270 POPCHAR7280 JMP $FFFF ;os print ch!}ar7290 ;7300 GETKEY7310 JMP $FFFF ;os get key7320 ;7330 ZAPLINE7340 LDA #$9C ;delete line7350 BNE POP!}CHAR7360 ;7370 WAITKEY7380 JSR GETKEY ;waiting..7390 CPY #$80 ;BREAK!7400 BEQ ABORT ;quit7410 CMP!} #$1B ;ESCape?7420 BNE NOPROMPT ;no7430 ABORT7440 JSR NOPROMPT ;clear7450 BMI ABORT2 ;and quit7460 NOPRO!}MPT7470 JMP ZAPLINE ;clear text and return7480 ;7490 SAVECOL7500 LDA COLCRS ;column pointer7510 STA COUNT !} ;save it7520 RTS 7530 ;7540 REPEATME7550 LDA COUNT ;restore column7560 STA COLCRS7570 BPL UPONE ;a!}nd move up7580 ;7590 GETNAME7600 JSR SAVECOL ;save column7610 JSR GETINPUT ;get input7620 JSR PARSE ;legal!}ize name7630 SHOWNAME7640 JSR REPEATME ;back up7650 JMP PRINTSTRING ;print and return7660 ;7670 *!}*7680 ;entry: input string in lbuff7690 ;exit: legal filespec7700 PARSE7710 LDA LBUFF ;first char7720 BMI AB!}ORT2 ;CR..abort!7730 LDY ICBLEN,X ;get length7740 DEY ;adjust7750 STY LEN ;and save7760 LOOK777!}0 LDA (INBUFF),Y7780 CMP #': ;legal spec?7790 BEQ LEGAL ;yup7800 DEY 7810 BNE LOOK ;again78!}20 ;no spec7830 ADJUST7840 LDA LEN ;input length7850 TAX ;index old pos7860 CLC 7870 ADC #3 !} ;spaces to move7880 TAY ;index new pos7890 SHIFT37900 LDA LBUFF,X ;input character7910 STA (INBU!}FF),Y ;3 spaces right7920 DEY 7930 DEX 7940 BPL SHIFT37950 INSERTSPEC7960 LDA DRIVE,Y ;insert default79!}70 STA (INBUFF),Y7980 DEY ;backwards!7990 BPL INSERTSPEC8000 ;check device number8010 LEGAL8020 !}CPY #1 ;specified?8030 BNE GETBACK ;yes8040 LDA LEN ;no..as above8050 TAX 8060 CLC 8070 ADC!} #1 ;adding 1 space8080 TAY 8090 SHIFT18100 LDA LBUFF,X8110 STA (INBUFF),Y ;move over8120 DEY 8130!} DEX 8140 BNE SHIFT18150 INSERTNUM8160 LDA #'1 ;default number8170 STA (INBUFF),Y ;to input8180 GETB!}ACK8190 RTS 8200 ABORT28210 JMP CLEANEXIT8220 ;8230 ;SFLOAD patch control!8240 PATCHON8250 LDX # LBUFF ;buffer8270 BNE PATCHSFLOAD ;to safe ram8280 ;8290 PATCHOFF8300 LDX # LOADZONE ;default8320 ;8330 PATCHSFLOAD8340 ;entry:x,y=address of 'header buffer'8350 ;8360 STX PA!}TCH1 ;byte lo8370 STX PATCH3 ;word1 lo8380 INX 8390 STX PATCH4 ;word2 lo8400 STY PATCH2 ;byte hi8410!} STY PATCH3+1 ;word1 hi8420 STY PATCH4+1 ;word2 hi8430 RTS 8440 ;8450 ;8460 **8470 MENU8480 !} .BYTE CR,"1 2 "8490 D88500 .BYTE "8 Era Rename Bload Move Cart @DOS",LINEND8510 DEFAULT8520 .BYTE "D1:",LINEND8!}530 DRIVE8540 .BYTE "D1:"8550 FILE8560 .BYTE "*.*",CR8570 XBUG8580 .BYTE $FD," Error ",LINEND8590 XERASE86!}00 .BYTE " >",LINEND8610 XRENAME8620 .BYTE " >",LINEND8630 XBLOAD8640 .BYTE " >",LINEND865!}0 XMOVE8660 .BYTE " ",CR8670 XFROM8680 .BYTE " FROM >",LINEND8690 XTO8700 .BYTE " TO >",LINEND8710!} XFROMIN8720 .BYTE " FROM disk?",LINEND8730 XTOIN8740 .BYTE " TO disk?",LINEND8750 XCONFIRM8760 .BYTE " CO!}NFIRM",LINEND8770 **8780 KEYTABLE8790 .BYTE "128ERBMC@" ;legal keys8800 **8810 JMPTABLE8820 !} .DBYTE DODIR-1,DODIR-1,DODIR-1,DOERASE-1,DORENAME-1,DOBLOAD-1,DOMOVE-1,DOCART-1,DODUP-1 ;command vectors8830 ;8840 .O!}PT LIST8850 FROMNAME .DS $108860 HOLDSTACK .DS 1 ;stack pointer8870 ;8880 ;wedge ends8890 .OPT NO LIST8900 ;8910 ;!}reserve Bigblock8920 .ORG $24008930 NEWLO8940 ;8950 ;bottom of free memory8960 ;following code is wiped out8970 ;8!}980 INITWEDGE8990 ;RESET9000 GETWORD DOSINI ;old one9010 STORWORD RESET+1 ;to patch9020 GETADR RESET ;n!}ew one9030 STORWORD DOSINI ;to os9040 ;save DUP.SYS run address9050 GETWORD DOSVEC9060 STORWORD DUPEXIT!}+19070 ;install os vectors9080 OSVEC EPUT,POPCHAR9090 OSVEC KGET,GETKEY9100 ;check dos version9110 LDA $!}0D189120 BPL CHEKD8 ;dos 2.59130 LDA #6 ;set dir aux9140 STA DIRAUX+1 ;for dos 2.09150 ;check for Ramdi!}sk9160 CHEKD89170 LDA $070A9180 BMI D8OK ;president9190 LDA #$1E ;nope-zap 89200 STA D8 ;in m!}enu9210 LDA #'1 ;and9220 STA KEYTABLE+2 ;keytable9230 D8OK9240 JSR SHADOWS ;take over9250 JSR SHOWTI!}TLE ;print title screen9260 ;9270 JSR BASON ;switch on basic9280 LDX #09290 STX COLDST ;warmstart ok9300 !} INX 9310 STX BOOT? ;disk booted9320 JMP ($BFFA) ;READY!9330 ;9340 **9350 HELLODERE9360 .B!}YTE "BASWDG 2.86 don lebow",CR,CR9370 .BYTE "RESERVED MEMORY:",CR,"$1CFC-$1D59 (7420-7513)",CR9380 .BYTE "",CR,CR9390 .BYTE "RESET:",CR,"TEXT 7450 BACK 7452",CR9400 .BYTE "KEY DELAY 7460 KEY REPE!}AT 7462",CR,CR9410 .BYTE "CONFIRM:",CR,"BREAK/ESC to quit..RETURN to go",CR,CR9420 .BYTE "BIGBLOCK:",CR,"$1D5A-$23F!}F (7514-9215) is FREE",CR,CR9430 .BYTE "LOMEM SHADOWS: 7470,7471",CR," POKE value, RESET, and NEW",CR9440 .BYTE " N!}EVER SET BELOW $1D5A (90,29)!",CR,CR,LINEND9450 ;9460 SHOWTITLE9470 GETADR HELLODERE9480 STORWORD FR09490 !} LDY #09500 TLOOP9510 STY HOLD19520 LDA (FR0),Y ;character9530 BEQ ENDTITLE9540 POP29550 JSR POPCHAR ;!}print it9560 LDY HOLD19570 INY 9580 BNE TLOOP9590 INC FR0+1 ;clik up9600 BNE TLOOP ;always9610 !}ENDTITLE9620 RTS ;screen printed9630 ;runme9640 *= RUNAD9650 .WORD INITWEDGE9660 ;*whew*9670 .!}END TLE9620 RTS ;screen printed9630 ;runme9640 *= RUNAD9650 .WORD INITWEDGE9660 ;*whew*9670 .  hة" '"BDE V ذG ٠ȱɛ,ԅՅȘeL# !ԅ >"0 a"0ꥢ ~"%} '"` >"ȱL"ȱȱ ş a"פ鱊    #  C`ȱ !?L! O"%} ! O" O"ħȄ Dڪ ٥ŖŕLh!&}0#%ee ! Y"` Dڥԥ ٢ԑ`) Y"  !`8`x"&} '" {" '!"" Dڥԥ ؠȱ) ȑHDE BILV䥈` Y"`i`&}ee`NF VR Line Numbers out of range...}FIRST LINE,INCREMENT ? >" a"`ڠ" '"`Renum&}ber with USR(8192)"R Line Numbers out of range...}FIRST LINE,INCREMENT ? >" a"`ڠ" '"`Renum$QRVALUFREBFRFILEEXTADDRESSECTONUMBLOCBLOCLENGTCOMMANREADINAMELEEXTLEAA@B)9*}p9p9p EpB8  !!"ӠҠ֠" *}!!"Ҡà٠î̠ͮ"'AAT'A ,,($} S+(# *} Convert 3 S(#  Revision 1.0 By C.M.GILL (++(# 2%-A*}6A@"!% <104,32,83,228,96F6-I:,&AP ;,;@,;@,Z6. * } d 6-C:,n567@,.,67@,.7@,567,.xO(,(! You may convert a file that isO( * }up to  bytes long.V(.(# ӠV(# 堣N(+( E* }nter the filename or press N( Π for a directory.( FILENAME.EXT 4A@S37@* }<@,4:)7@<@,4:K( Do not use D: S6.  Ap6-@ A-@* }A@7<%@,4AP %6-%@%!@#A` A!6-@:7%@<*}%@,,?6-@:7%@<%@,,6-@:7%@<%@,,%AV$@:7%@<%@,, A%(%*}( File  was not found.&&( Press Ԡ to try again. F:B2y,@Au%"A ! (7(& Th*}e file you have chosen is too long.A Ap,9/+++%,&@,$@,%@2!A 9 A6 6-C:,@==-+$*}@,%@%+++%,&@,$@,%@2J AT6-%A(^ hV(.(# Ӡ*}V(# 堣rL(0(% Enter the filename you wish to use.H( D:FILENAME.EXT L*}w4Ap|T37@<@,0:*7@<@,0:J( Don't forget D: T Ap!(!( Writing *} ... @@ 6-C:,AP@HASP:'AV,HARP:+'AV&P*}:'AV,,$AV,HAWP:'AV,HAVP:+'AV&P:'AV,,$AV,6-?:C:hhhLV,<@,*}@%-@HAyP:'AV,HAxP:+'AV&P:'AV,,$AV,Ai@*}HAsP:'AV,HArP:+'AV&P:'AV,,$AV,Ap&6-?:A6,0$: 6-B:,D*}-@N97<,4.!6.7%@,/6-&@9 A0X b7B:, @ 6-%@-67<,. 7*} Al Av6.7@<,7B:, @ 6-%@-67<,. 7 A@ 6-B:,7B:, @*} 6-%@-67<,. 7 A`67@ <@,.$o-(%} The file you have selected is on ano(*}< enhanced density DOS 3 disk. It is stored past sectorT ( 720.2( DOS 2.0 can not access a sector T(larger t*}han 720. If you move O)(! your file to a DOS 3 disk with O(!fewer files on it and rerun this 1$( program it will *}convert it.'(1 Ap36-@(0(} DOS 3 DIRECTORY3( A-@A@t=*}7<%@,0 *7&@<&@,4t( 7<%@,.7%@<%@, %6-*}%@%!@#A  AE4(*( Press Ԡ to continue.4 Au D:CONVERT %6-(pDOS 3.0 to DOS 2.0/2.5 file converter.The idea for this program came from a plea put out on our club BBS. It seems that qui.!}te a few recent Atari 1050 owners have recieved only DOS 3.0 with their drives. After collecting a few disks worth of files t."}hey suddenly wish they could transfer them to good old DOS 2.0/2.5. After a couple of hours of playing with DOS 3.0 I found o.#}ne solution. I realize that another solution was printed in ANTIC before but it could only convert BASIC files and was a bit .$}awkward to use. DOS 3.0 converter will transfer any type of file you may have.How DOS 3.0 saves files.With the idea of th.%}is program in mind I started delving into the workings of DOS 3.0. Using a short program that reads raw sector data and a dis.&}k that I filled with files, I was able to determine the following. DOS 3.0 is organized into blocks of 8 sectors rather than .'}individual sectors. This wastes a lot of disk space. The first three blocks (sectors 1-24) are reserved by the file managemen.(}t system. The disk directory is on sectors 16-23. Filenames are followed by four values, the first represents the number of b.)}locks long the file is. The second gives the block number. Blocks are numbered from zero, with block zero being sectors 25-32.*}. The third and fourth values represent the file length in bytes. This is presented in low byte, high byte format. How to u.+}se the program.Copy this program onto a DOS 2.0/2.5 disk. When run it will prompt you to insert your DOS 3.0 disk into driv.,}e one. Enter the filename, but do not use the device specifier D:. Your file will be read into the computer. If it is too lon.-}g you will be told. You can convert a 27K file on a 48K machine. You will then be prompted to insert your DOS 2.0/2.5 destina..}tion disk and provide a filename. This time a device specifier is required. (That was for those of you with multiple drives)../} That is all there is to it. There are however a couple of potential problems. The first is that on an enhanced density DOS 3.0}.0 disk there are more than the usual 720 sectors. DOS 2.0 can not read past sector 720. The program checks for this and will.1} provide instructions. All that you have do to is transfer the file onto a DOS 3.0 disk with fewer files on it and rerun the .2}conversion program. The other problem is handled much the same way. The conversion program will have problems with a disk tha.3}t has had files deleted from it and new programs saved. The conversion program does not check to see if a file is stored in c.4}ontinious blocks, it assumes it is. If you convert a program and find that it does not run in DOS 2.0/2.5 format, copy the or.5}iginal file onto a freshly formatted DOS 3.0 disk. The conversion should then operate properly.Program description.Line 5.6}0 pokes the initialization for the read sector routine into page six.Lines 140 to 170 is the input of the DOS 3.0 filename. .7}The filename is converted to the same format as it is stored on the disk sectors in the subroutine at lines 570 to 690.Lines.8} 180 to 280 checks the DOS 3.0 disk for your file. If it is found it determines where it is on the disk and how many bytes lo.9}ng it is.Line 290 checks to make sure the file will fit in the buffer.Line 300 checks to see if any part of the file reside.:}s on a sector greater than 720.Lines 300 to 350 reads the actual file into memory.Lines 360 to 380 get the destination file.;}name.Lines 390 to 460 use a CIO routine to write the DOS 2.0/2.5 file.Lines 500 to 560 is the subroutine to read in the raw.<} sector data. It is used for all input from the DOS 3.0 disk.Lines 570 to 690 is the filename formatting subroutine.The rem.=}ainder of the program is a help screen for dealing with enhanced density disks.I hope that this program will help you bridg.>}e the incompatability gap between the two operating systems. Those of you with modems can save a bit of typing,this program i.?}s available for download on the MACC BBS 209-527-1205. If you have any questions leave me a message.of typing,this program i,e\]M~BBFFDD2MAIOCADRHADRLNUMLNUMHEOSEBYTDSEDBYTFLABYTEDRSOURCDESKENBH ``2A}`ac@AA @ 2B}0e@@@I@@iiŠȠӠҠ2C} Š٠Ӡ -----------------------iiŠȠӠҠ 2D}ɠ٠ -----------------------iiɭ٠ 2E} 젠 A p A@-6-@6-@-AR@`6-P:I:2F},$?,`;,;@ ,;@$@8,;@$@8,;@ ,# 6. 67,.#67@,.##@2G}@K: A(--(%}=source directory =copy2B6.DX:*.*6-@667@<@2H},.=:,B6-@<4 @@4-@@8Ff@B7@<@,4 F)7@2I}<@,4+FP6-&@\6-@8f A@K36.7@(#䬠K)@U @@Z-@@";(Error #F:A, h2a}as ocurredE A@P@Z A0 A G -)67<,.>:@:7<,,%A(,- ;-%@D(7<,G$2b}G -)67<,.>:@:7<,,&A(,- ;-%@D(7<,G$0 -)67<,.>:@:7<,,%A(,- 0$0 2c}-)67<,.>:@:7<,,&A(,- 0$b%2@`@@9-@@= _22d}b$%"@ A %6-_6.DX:X.X*67@<@,.=:,G@@T2e}@_@B-@@?(A:, Destination sectors remaining.B$))(!} ֱ2f} &&( î̠ͮ..(&Choose Source and destination drives--(%with and . Use j2g}oystick ,,($to move through list of files. Press--(%trigger to select (or deselect) files((( to copy. Press 2h} to copy. Or++(#press for a new Source disk.!@6-@!@6-@B-@@2i}B(Source drive - D: to change3(3(Target drive - D: to change>-@@">(2j}$Insert disk press when ready.! -@@"!(sBF:B2y,"@&6-%@8B2y2k}B AVBF:B2y,"@&6-%@8B2yB AV"%F:B2y,"@" A@%$, Ae2l}#Ah%@H#Ai'Ap@'Aq@HAsP:'AV,HArP:+'AV2m}&P:'AV,,$AV,'Ay'Ax@!6-?:A6,!6-F:Aq,"AD A0 2n}$%-A6A@"!%  104,32,83,228,96*$ @-@@3(Format destination disk?@)@2o} &@:Y,( NO''& A0 3 ( YES6.DX:X.X367@<@,.=:, 3(AT@2p}3@ $D:MULTI 3 ( YES6.DX:X.X367@<@,.=:, 3(AT@0+12 AFILEENAMECOUNCSIZECCOL1CCOL2CSIZ]]@A8@@]6r} ] ] ]@ +GG;B@,;@ ,;@ ,;@6s},;@,;@,/(+( WOULD YOU LIKE 0 OR 0 COLUMNS?/ 46.S0 @%/7@<@,6t}04%6.S0/ @% 6.S1/+(#}AINBOW OR INGLE COLOR PRINTING?/ 46.R @).7@6u}<@,0S$6.R. @) 6.S 4R @5B((PICK YOUR COLOR:>( 1=BLACK 2=BLUE 3=GREEN 4=RED6v}B 46.0 @5 '01*02*03*04' @0!6-A:,&@6.=:,# (}$(7@<6w}@,40(6-@%(7@<@,41(6-@@' A (##@@P:2(@6x}<(@F6-P 6.D:ZM(ENTER FILE NAME:5( FOR DIRECTORYI( 'END' TO STOPM6y}d 4END A`n 4(} Apx=37@<@,4:)7@<@,4:= A@67@6z},.6. A @@27@<@,4:(6-@2 Au6-@ 6{}4S6-A:,,,(@C*P FILE = 7,I7@<@,410(@M0,-19?(@II 6|}A%(@M0,-9%(@I 4S A)6-%@"@)6-6-@6}})@$"AU*B:,"$6. "AU A )67<,.>:,6-%@) A(6-B:6~},'P:,(6-P:%@,-@ 6-$!B:,6-B:,..(@C*P7$&+&@,<,I6}7@<@,410(@M0,-19?(@II Ap%(@M0,-9%(@I  4S6} A)6-%@"@)6-" 6. A,6-F:A,6="Ap"(FILE NOT FOUND%(6}((3@= @@JA6G(ERROR # ON LINE F:A,$AV%F:A,JJ@@T6}(}PRINT COMPLETE^ @@h@@r&&@@D:*.*| A@6}( A@(( @6-F:A,%%6-F:A,$AV%F:A,7A84(6}ERROR # OCCURRED ON LINE 7/+("TURN ON PLOTTER AND PRESS /@(} @9D6}:LISTER OCCURRED ON LINE 7/+("TURN ON PLOTTER AND PRESS /@(} @9D4##8峅?$H)h) & & e8E$Ƴм#ԩ"/ԭ01 $S >}\  \`HH ԍЎЩ#hh@HT ԍЩÍ#h@HH ԍЎЩ#hh@HH! ԍԎЩ>}#h#$h@HHD ԍЎЩ$hh@HH ԍЎЩ#hh@  0resentingppK$ 0 >} 0pp0ppAS$4%/&??<8` s< 〜>}   À À>}@@80&+'@@8>}88 p p8p 8p '8p '>}p88` g p8??<,''(ǿـ倭䀰Y)>}fyouhaveacomment criticism joboffer or,!2'%-/.%4!29$/.!4)/.sende mailto>}-ad0rogrammer; =3outh5(((lster#ourt$enver #/>}0ress;=### 3 3"3#33 3 D * ..)lY)@Xi(>}泥S)Mȱ) @Șe汄.8徨ȑȥ0 ȱȱЋ..ѰѰ.i>}... ++ )^f/`g/#$…ą泦e0g .B D/EJ +B>}D3EHI` +H238 ȹ38 ]. eŅĭ013 )ĥ x.)>} * M!/0%/J)@0 )@$%0Ȅ eeŽ„ * * R. .ii` e>}ee池11i 3 ꩛3 . ./1¹/ 1 l+ x.) ;!>};<< *8 *11i 3%&쩛3 . .C3ɍ7) *?  x.) *C3D3>}!C3 *D3) * 4 x.8 * .f3ɍ6 * x.) *f3g3f3 *g3) * >}4 x.8 * . .BD3EJ +BD&'3EHI +33ɀ  .L+@H…3>}`©P +) + +泅 + 40ΘiP!`„澥) 8-/ť./ťƲƳ(0h>}eťi^ЭЧ . .n3'a(+0 u*8 l+<]8 x.)8 eŨ>}2I;2 . eŨ2)3 {* *8b(]) * .ʠ0 u* BD3EJ +>}@pc bhi( )3JfJfFFƻ8循ŝ3i(ƾƱ>}СУũY3JƾŽ@8ŽC3!$ i^)Y*泥I &*ЛiiЈ>} .L+ # .",#L{* * .*Dn R.*+ hԩ:/ >}Щo0ТX/Lu*C3)')@i `8@ })f3Z*U+*J  k* L+`01 .`>} B +`;1/ /1/) *`)?` |`Њ) `HH />}H/ ԍhhh@HHD ԍЎhh@l38f/åg/*ɧ$ *f/i(f/V+Q,g/ *f/8(f/g/` *&1/  >}x.8 ii` M0+h@ V0`222//2 . . ){2ɍ7 >}l+2#$# x.) *{2|2{2 *|2) * 4 x.8 *{2#LR,M-w$7 ."/Ѝo3>} Н u*L# .3"3#33 / {* 3 3 , ) .L+l +j>} O.0ԭ1ԢoЭ/ԭ)+)П+ + N-I.ҍtsŻ (Ż">}f/8(f/g/滭f/i(f/g/ eei8i Х8廅 ei4 R. R. R...ȥ>}溥)@0n0.8. j....ȑ.0n)@nJ.E/Lbl&lm`>}潥H8 ũ|ȑh?` .濢)Т .`hIH(` .i>i1ĥ` & & & & >}&ee`00!b//0.BA0g2Dd D:*.*E:  '!2350?:*8=9 F//%# /(>- .+>}4 ppB0BB`BAX/00pppN@>}>}A000pppBpcBA001٤YTٶYTّY4he-ad0rogrammerstrikes>}again0ress;=fornewdirectory0ress;=;=;=;=or;=)nputfile_$11%>}nteroutputfile_$11&rom$11to22,oadingcompactedpicture%rrorfromfilenotcompactedform>};=e run;=/3or;=oldstart_$e rezilutionsuccessful%rror23$e rezilutionaborted>}o;=o;=o;=o;=or;=$e 2ezilyzing;=nternalcodesor;=4!3#))_>};=or;=columns_%rror$/3loadunsuccessfulD:#;=nternalcodesor;=4!3#))_<O#$|AXLPB0NZ :} +AdAU0@@@70@@Q0@@@c@@:}u@@7{(}AR@++(#++(#| ANTIC PD -- MONITOR/DEBUGGER :} |++(#++(# @ -@A:} $ GG;@@,;@ ,;@@,;A,;@,;@@, "D1:MENU" &&@@:}D:*.* 6,6." 6 @0i6-%@(6.7@<@,A67@ <@ ,.:}.i67@<@,.7@<@,3 6.|67B:,%@,.367B:,%@,.G67@<@,.(--:}@B:,:7<,4 G67<,..] 6.=:, @D67@<@,.7@<@,]67@<@:},.0$@(''7@<@,4FREE@- @ 2() <@F''7@:}<@,4FREE@K @ P(7@<@,)|U @0W'!-@6+'@,%@' |Z+:}+(#| |[ ( |  |\++(#xAR:}[@@9'-@@"C( SELECTIONM A0Q[ BP:,A00:}"@&6.7@<@,0 AELB6.7+&@,$@%@<+&@,$@%@,L B3:}7@<@,4 36.7@<@,!7@<@,4DOS!.0 6.-@B:,07<,4 AH:}67B:,%@,.7<,   6.! 6.D1:!67B:,%@,.?AR@'-@@"?  :} LOADING ? A@@91@@5%? BK-@@"-  CANNOT RUN 7 :}@A BK A0D:MENUKEYBOARD.BAS0 25%? BK-@@"-  CANNOT RUN 7 8:  \`bb D:MENU" @j