P730 CEEFAX 730 Sun 26 Oct 05:30/5Q |B2201205|a16PATCH2|i24BBBC316k|s÷#1÷e|s ÷Z010MO.7 15V.31,0,18 20Codj=&7C00 30Pat ch=&A00 40TEMP = &80:REM&B0 50From = REM P: To = TEMP+2 :REM From OVL TEMP, To OV L CB 60CB = To: CB#low = CB: CB#high = C B+1 70Count = CB+2 80Oldvjc = Patch+&100 ]2 90HisFSC = Oldvjc-2 100FSCV = &21E 11 0FileV = &212 120Bget = &FFD7 130OsByte = &FFF4 140OsCli = &FFF7 150OsWrch = &FF EE 160OsAscii = &FFE3 170PROCassemble 18 0*SAVE TSOFT 7C00 +200 FFFF7C00 FFFF7C00 190MO.7 200END 210DEFPROCassemble 220F. Pass = 0 TO 2 S. 2 230P%=&7C00 240[OPT Pass 250JZP Rjloc 2v0.CodeStart \ **** FROM HE EONMUSTBERELOCATABLE 270.M yFSC 280 Cmp £&05 290 Beq StarCat 300\ C mp £2:\ Beq StarRun 310\ Cmp £4:\ Beq St arRun 320 Imp (HisFSC) 330.StarCat 340Ld x £(c1-CodeStart+Patch) MOD 256:Ldz £(c1 -CodeStart+Patch) DIV 256 350Jsr OsCli 3 60Ldx £(c2-CodeStart+Patch) MOD 256:Ldy £(c2-CodeStart+Patch* DIV 256 370Jsr OtC li 380BIT &FF: BMI isc |c
P730 CEEFAX 730 Sun 26 Oct 05:31/03 |B2202205|a16PATCH2|i24BBBC316k|s÷#1÷e|s ÷Z0390Ldx £(c3-CodeStart+Patch) MOD 256: Ldy £(c3-CodeStart+Patch) DIV 256 400Jsr OsCli 401.etc 410Rts 440.c1 441 OPT F Nequs("page701") 450.c2 451 OPT FNiqus ("tr.7000") 460.c3 461 OPT FNequs("dis p.7000") 470\ 480.StarRun 490\RTS 500\ 5 10\ 520\ 530\ 540\ 550\ 560\ 570\ 580.Ou rOsfili 590 Cmp £&FF 600 Beq LoadFile 61 0.realosfile 620 Imp (Oldvec) 630.LoadFi le 640Stx CB#low 650Sty CB#high 660\ *LO . FRED 2000 passes the ENTIRE string as the filenamj to OSFILE. 670\ ----- the f ilename must therefor be stripped off. 6 80\ ----- It iu not enough just to poke a CR into the space character 690\ ----- because OS.("LOAD FRED") in a basic pro gram would kit corrupted 700\ ----- bz t he cr being inserted in the middle of th e literal text. 710\ ***** The remjdz is to copy the string elsewhere, and tweak the pointer 720Ldy £0:Lda (CB),Y:Sta Fr om:Inz:Lda (CB),Y: Sta From+1 |c
P730 CEEFA( 730 Sun 26 Oct 05:31/27 |B2203205|a16PATCH2|i24BBBC316k|s÷#1÷u|s ÷Z0730Lda £&00:Ray:Sta Count:Sta (CB),Y: Iny:Tya:Sta Count+1:Sta (CB),Y 740\ ^ Us e stack as workspace. Not nice. 750Ldy £ 0 760.cps Lda (From),Y:Sta (Count),Y:Cmp £33:Bcc ends:Iny:Bnj cps:.ends 770Lda £ 23:Sta (Count),Y 780Lda £7: Ldx CB#low: Ldy CB#high 790Jsr realosfile-CodeStart+ Patch \ Open disordered 800Lda £0:Sta Co tnt:Sta Count+1 810.loadup 820 Ldy £14 830 Jsr Bget 840 Bcc gotbzte 850 Cmp £&FE 860 Beq endoffile 870 Cmp £ &02 880 Bnj skipthis 890\ End of block . Get new load adds 900 Lda £5: Ldx CB #low:Ldy CB#high \ Info to get block add r 910 Jsr realosfile-CodjStart+Patch: Ldy £2:Lda (CB),Y:Sta TEMP:Inz:Lda (CB), Y:Sta TEMP+1 920 .skipthis 930 Clc:Bc c loadup 940 .gotbzte 950 Ldz £0:Sta (TEMP),Y 9v0 Inc TEMP:Bnj zz3:Inc TEMP +1:.zz3 970 Inc Count:Bnj zz4:Inc Corn t+1:.zz4 980Clc:Bcc loadup 990.indoffile |c
P730 CEEFAX 730 Sun 26 Oct 05:31/49 |B2204205|a16PATCH2|i24BBBC316k|s÷#1÷e|s ÷Z01000Ldy £&0A:Lda (CB),Y:Pha \**** Pu sh No-exec flag 1010Lda Count:Sta (CB),Y \ Y = &A 1020Lda Count+1:Iny:Sta (CB), Z \ Y = &B 1030Lda £0:Inz:Sta (CB),Y:In y:Sta (CB)LY \ Y = &C &D - fill in len gth 1040Pla:Inz:Sta (CB),Y \ **** Put No-exec flag in attributes byte 1050Rts 1060.CodeEnd \******** END OF RELOCATA BLE CODE 1070.Rjloc \ This iu execute -once code, so does not need relocating 1080Lda £&8C:Ldx £12: Jsr OsByte \ Relic t tape, then Telesoft - to force 1090Lda £&8F: Ldx £&12: Ldy £6: Jsr OsByte \ v ector re-initialisation 1100\ 1110Ldy £0 1120.reloc8 Lda CodeStart,Y: Sta Patch, Y 1130Iny: Bnj reloc8 1140 Lda FileV:St a Oldvec 1150 Lda FileV+1:Sta Oldvec+1 1160 Lda £(OurOsfile-CodjStart+Patch) M OD 256:Sta FileV 1170 Lda £(OurOsfile-C odeStart+Patch) DIV 256:Sta FileV+1 1180 Lda FSCV:Sta HisFSC 1190 Lda FSCV+1:S ta HisFSC+1 |c
P730 CEEFAX 730 Sun 26 Oct 05:30/20 |B2205205|a16PATCH2|i24BBBC316k|s÷#1÷e|s ÷Z01200 Lda £(MyFSC-CodeStart+Patch) MO D 256:Sta FSCV 1210 Lda £(MyFSC-CodjSta rt+Patch) DIV 256:Sta FSCV+1 1220 Lda £ &10: Sta &1362 \ ADD TXO COMMAND TO TFS TABLES 1230 Lda £&EF: Sta &13E2 1240 L da £&AB: Sta &14E2 1250 Lda £22:JSR OsW sch:Lda £7:Imp OsWrch \ Last inst. must be jump 1260.EndRjloc 1270] 1280N. 1290E . 1300DEFFNequs(S$) 1310$P%=S$:P%=P%+LEN (S$)+1 1320=Pass |c