10REM Y2K Repair and ADFS Wipe 20REM For BBC Master 128 only 30REM Co-processor compatible 40REM Some flags retained 50REM for future development 60address=&70 70f_count=&71 80flag=&72 90flagF=&73 100filetype=&74 110file_num=&75 120deleted=&76 130escaping=&77 140dir_flag=&78 150highbyte=&79 160length=&7A 170lowbyte=&7B 180ww_or_wipe=&7C 190help_type=&7D 200pblock=&DD00 210OSBYTE=&FFF4 220OSFILE=&FFDD 230OSRDCH=&FFE0 240OSASCI=&FFE3 250OSNEWL=&FFE7 260OSWRCH=&FFEE 270oscli=&FFF7 280zp=&A8 290zp1=&A9 300DIM C% 2000 310FOR D% = 4 TO 7 STEP 3 320P%=&8000 330O%=C% 340[OPT D% 350EQUB &00 360EQUW &00 370JMP service 380EQUB &82 390EQUB copy-&8000 400EQUB &03 410.title 420EQUS "Y2K Repair and ADFS WIPE" 430EQUB &00 440EQUS "3.10" 450.copy 460EQUB &00 470EQUS "(C) 2003 Raffaele Giaccio, Mark Bush" 480EQUB &00 490.service 500CMP #&22 510BEQ workspce 520CMP #&27 530BEQ reset 540CMP#&24 550BNE out 560DEY:RTS 570.out CMP#&09 580BEQ hlpjmp 590CMP#&04 600BEQ calljmp 610RTS 620.hlpjmp JMP help 630.calljmp JMP call 640\ 650.workspce 660PHA 670TYA 680STA &0DF0,X 690INY 700PLA 710RTS 720\ 730.reset SEI 740PHP:PHA:PHY:PHX 750LDX #&00 760LDY #&FF 770LDA #&A8 780JSR OSBYTE 790STX zp 800STY zp1 810LDY #&12 820LDA #tim MOD 256 830STA (zp),Y 840INY 850LDA #tim DIV 256 860STA (zp),Y 870INY 880LDX &F4 890TXA 900STA (zp),Y 910LDA &0DF0,X 920STA zp1 930LDA #&00 940STA zp 950LDA &020C 960SEC 970SBC #&01 980STA (zp) 990INC zp 1000LDA &020D 1010SBC #&00 1020STA (zp) 1030INC zp 1040LDA #ret MOD 256 1050SEC 1060SBC #&01 1070STA (zp) 1080INC zp 1090LDA #ret DIV 256 1100SBC #&00 1110STA (zp) 1120LDA #&12 1130STA &020C 1140LDA #&FF 1150STA &020D 1160PLX:PLY:PLA:PLP 1165 CLI 1170RTS 1180\ 1190.tim 1200CMP #&0E 1210BEQ clock 1220PHA 1230PHA 1240PHA 1250PHX 1260LDA zp 1270PHA 1280LDA zp1 1290PHA 1300LDX &F4 1310LDA &0DF0,X 1320STA zp1 1330LDA #&00 1340STA zp 1350TSX 1360LDA (zp) 1370STA &0105,X 1380INC zp 1390LDA (zp) 1400STA &0106,X 1410PLA:STA zp1 1420PLA:STA zp 1430PLX 1440PLA 1450RTS 1460\ 1470.clock 1480PHY 1490PHX 1500PHA 1510PHA 1520PHA 1530PHA 1540PHA 1550PHP 1560PHY 1570LDX &F4 1580LDA &0DF0,X 1590STA zp1 1600LDA #&00 1610STA zp 1620TSX 1630LDA (zp) 1640STA &0103,X 1650INC zp 1660LDA (zp) 1670STA &0104,X 1680INC zp 1690LDA (zp) 1700STA &0105,X 1710INC zp 1720LDA (zp) 1730STA &0106,X 1740STY zp1:LDA &0108,X:STA zp 1750LDA (zp) 1760STA &0107,X 1770LDA &0108,X 1780TAX 1790PLY 1800PLP 1810LDA #&0E 1820RTS 1830\ 1840.ret 1850PHY 1860TSX 1870LDA &0103,X 1880STA zp 1890LDA &0104,X 1900STA zp1 1910LDA #ASC("2") 1920LDY #&0B 1930STA (zp),Y 1940LDA #ASC("0") 1950INY 1960STA (zp),Y 1970PLY 1980PLX 1990PLX 2000PLX 2010LDA #&0E 2020RTS 2030\ 2040.call 2050PHP:PHA:PHY:PHX 2060LDX#0 2070.commloop 2080LDA(&F2),Y 2090AND#&DF:CMP name1,X 2100BNE wipe_out 2110INY:INX:CPX#4 2120BNE commloop 2130LDA(&F2),Y:CMP#&0D:BEQ wipe 2140CMP#ASC" ":BEQ wipe:BRA exit 2150.wipe_out CMP#14 2160BEQ check_dot:bra exit 2170.check_dot CPX#3:BPL wipe 2180.exit PLX:PLY:PLA:PLP:RTS 2190\ 2200.wipe 2210LDA &70:PHA:LDA &71:PHA:LDA &72:PHA 2220LDA &73:PHA:LDA &74:PHA:LDA &75:PHA 2230LDA &76:PHA:LDA &77:PHA:LDA &78:PHA 2240LDA &79:PHA:LDA &7A:PHA:LDA &7B:PHA 2250LDA &7C:PHA:LDA &7D:PHA:LDA &90:PHA 2260LDA &91:PHA:LDA &92:PHA:LDA &93:PHA 2270LDX#0:.lp STZ &70,X:INX 2280CPX#&0E:BNE lp:STZ &90:STZ &91 2290STZ &92:STZ &93:LDX#0 2300.setup LDA name2,X 2310STA &DD20,X:INX 2320CPX#7:BEQ exit_lp0 2330BRA setup 2340.exit_lp0 2350\ 2360LDX#0 2370.start 2380LDA data,X 2390STA&90 2400INX 2410LDA data,X 2420STA&91 2430LDY#0 2440LDA(&90) 2450BEQ end11 2460CMP#&24:BEQ incr 2470BRA next01 2480.incr INX:bra start 2490.end11 JMP restore 2500.next01 LDY#0 2510.filesB LDA (&90),Y 2520BEQ end11 2530CMP#&0D:BEQ typeB 2540CMP#&8D:BEQ typeB 2550CMP#&00:BEQ typeB 2560STA &DD40,Y:STA &DD27,Y 2570INY:CPY#10:BEQ type_crB 2580BRA filesB 2590.typeB LDA#&20:STA &DD40,Y 2600STA &DD27,Y:INY 2610CPY#10:BEQ type_crB:bra typeB 2620.type_crB LDA#&0D:STA &DD40,Y 2630STA&DD27,Y:STY length 2640PHX:JSR erase:PLX 2650LDA escaping:CMP#1:BEQ stop4 2660LDA deleted:BEQ next03 2670STZ deleted:BRA next01 2680.next03 INX:BRA start 2690.stop4 JMP restore 2700\ 2710.erase STZ dir_flag 2720STZ escaping 2730LDA#0:STA pblock+14 2740JSR file_type:LDA file_num 2750CMP#0:BEQ stay3jmp 2760CMP#&01:BEQ go 2770CMP#&02:BEQ Pstay4 2780CMP#&FF:BEQ stay3jmp 2790RTS 2800\ 2810.Pstay4 LDA#1 2820STA dir_flag:BRA go 2830.Jstay7 JMP stay7 2840.stay3jmp jmp stay3 2850.go LDX#0 2860.e_loop0 LDA &DD27,X 2870CMP#&0D:BEQ go_out 2880CMP#&80:BPL s:BRA re_pt 2890.s SEC:LDA &DD27,X 2900SBC#&80:STA&DD27,X 2910.re_pt JSR OSWRCH 2920INX:JMP e_loop0 2930.go_out LDA#&0D:STA&DD27,X 2940\ 2950LDA dir_flag:BNE Jstay4:BRA Over 2960.Jstay4 JMP stay4 2970.Over 2980.go22 LDX#0 2990.YN_loop LDA question,X 3000BEQ go_out2 3010JSR OSWRCH 3020INX:JMP YN_loop 3030.go_out2 LDA#15:JSR OSWRCH 3040LDA pblock+14:AND#&08:CMP#&08:BEQ Jstay7 3050LDA pblock+14:AND#&09:CMP#&09:BEQ Jstay7 3060.select 3070LDA#21:LDX#0:JSR OSBYTE 3080JSR OSRDCH 3090CMP#&1B:BEQ stay5 3100CMP#89:BEQ delete 3110CMP#121:BEQ delete 3120CMP#110:BEQ stay 3130CMP#78:BEQ stay 3140BNE select 3150.delete JSR OSWRCH 3160LDX#&DD20 MOD 256 3170LDY#&DD20 DIV 256 3180JSR oscli 3190LDA#1:STA deleted 3200JSR OSNEWL:RTS 3210\ 3220.stay JSR OSWRCH 3230.stay2 JSR OSNEWL:RTS 3240.stay3 LDx#0:.L0 LDA &DD27,X 3250BEQ ty:CMP#13:BEQ ty:CMP#&80 3260BPL subtr:bra prt:.subtr SEC:LDA &DD27,X 3270SBC#&80:STA &DD27,X:BRA prt:CMP#&00:BEQ ty 3280.prt JSR OSWRCH:INX:BRA L0:.ty LDX#0 3290.L1 LDA name5,X:BEQ st:JSR OSASCI 3300INX:BRA L1 3310.st RTS 3320\ 3330.stay4 LDX#0 3340.show_dir LDA name3,X:BEQ end_stay04 3350JSR OSWRCH:INX:BRA show_dir 3360.end_stay04 JSR OSNEWL:STZ dir_flag:RTS 3370.stay5 LDA#1:STA escaping:RTS 3380.stay7 LDX#0:.L3 LDA name4,X:BEQ st2 3390JSR OSWRCH:INX:BRA L3 3400.st2 lda#7:jsr OSWRCH:jsr OSNEWL 3410STZ pblock+14:RTS 3420\ 3430.file_type 3440LDA#&40:STA pblock 3450LDA#&DD:STA pblock+1 3460LDA#length MOD 256:STA pblock+11 3470LDA#length DIV 256:STA pblock+14 3480LDA#&05 3490LDX#pblock MOD 256 3500LDY#pblock DIV 256 3510JSR OSFILE 3520STA file_num 3530RTS 3540\ 3550.restore PLA:STA &93:PLA:STA &92 3560PLA:STA &91:PLA:STA &90:PLA:STA &7D 3570PLA:STA &7C:PLA:STA &7B:PLA:STA &7A 3580PLA:STA &79:PLA:STA &78:PLA:STA &77 3590PLA:STA &76:PLA:STA &75:PLA:STA &74 3600PLA:STA &73:PLA:STA &72:PLA:STA &71 3610PLA:STA &70:PLX:PLY:PLA:PLP:LDA#0:RTS 3620\ 3630.data 3640EQUW &C405 3650EQUD &C439C41F 3660EQUD &C46DC453 3670EQUD &C4A1C487 3680EQUD &C4D5C4BB 3690EQUD &C509C4EF 3700EQUD &C53DC523 3710EQUD &C571C557 3720EQUD &C5A5C58B 3730EQUD &C5D9C5BF 3740EQUD &C60DC5F3 3750EQUD &C641C627 3760EQUD &C675C65B 3770EQUD &C6A9C68F 3780EQUD &C6DDC6C3 3790EQUD &C711C6F7 3800EQUD &C745C72B 3810EQUD &C779C75F 3820EQUD &C7ADC793 3830EQUD &C7E1C7C7 3840EQUD &C815C7FB 3850EQUW &C82F 3860EQUD &C863C849 3870EQUD &C897C87D 3880EQUD &C8CBC8B1 3890EQUW &0000 3900\ 3910.help 3920PHP:PHA:PHY:PHX 3930jsr OSNEWL:LDX#0 3940.loop LDA (&F2),Y:CMP#0D 3950BEQ print:CMP#ASC".":BEQ print 3960AND #&DF:CMP#63:BMI next 3970CMP table,X:BNE stop0 3980.next CMP#14:BEQ Rom_title 3990CMP#&0D:BEQ Rom_title:INY:INX 4000CPX#24:BNE loop 4010.proceed CPX#0:BEQ print 4020CPX#24:BEQ nextchr:BRA stop0 4030.nextchr DEX:DEY:LDA (&F2),Y 4040AND #&DF:CMP table,X:BNE stop0 4050INY:LDA (&F2),Y:CMP#&0D:BEQ print 4060CMP#ASC" ":BNE stop0:.print ldx#0 4070.loophlp lda string,X:beq end0:jsr OSASCI 4080inx:bra loophlp: .end0 jsr OSNEWL 4090.stop0 PLX:PLY:PLA:PLP:RTS 4100.Rom_title CPX#0:BNE stop0 4110ldx#0:.lp2 lda title,x:beq halt 4120jsr OSWRCH:inx:bra lp2 4130.halt jsr OSNEWL:bra stop0 4140.string equb&0D 4150equs"Y2K Repair and ADFS Wipe ROM 3.50":equb&0D 4160equs" CMOS clock millenium correction":equb&0D 4170equs" ADFS WIPE":equb&0D 4180equs" ":equb&0D:equb&00 4190.name1 EQUS"WIPE" 4200.name2 EQUS"DELETE " 4210.name3 EQUS " Directory":EQUB0 4220.name4 EQUS " Locked file":EQUB13:EQUB0 4230.name5 EQUS " Protected file":EQUB13:EQUB0 4240.question EQUS " DELETE (Y/N) :":EQUB0 4250.table equs"Y2K REPAIR AND ADFS WIPE":equb&00 4260.dne:]:NEXT 4270S$=STR$ ~C%:E$=STR$ ~ (dne-&8000+C%) 4280OSCLI "SAVE Y2KWIPE "+S$+" "+E$ 4290OSCLI "SRLOAD Y2KWIPE 8000 7 Q" 4300REM **SAVE THIS PROGRAM *** 4310REM **BEFORE RUNNING *** 4320REM *unless using a co-porocessor* 4330REM SAVE "$.Y2KWIPESC"