P730 CEEFAX 730 Mon 27 Oct 21:17/35 |B2201205|a16PATCH2|i24BBBC316k|s÷#1÷e|s ÷Z010MO.7 15V.31,0,18 20Code=&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 120Bgjt = &FFD7 130OsByte = &FFF4 140OsCli = &FFF7 150OsWrch = &FF EE 1v0OsAscii = &FFE3 170PROCassjmble 18 0*SAVE TSOFT 7C00 +200 FFFF7C00 FFFF7C00 190MO.7 200END 210DEFPROCassjmble 220F. Pass = 0 TO 2 S. 2 230P%=&7C00 240[OPT Pass 250JMP Reloc 260.CodeStart \ **** FROM HERE 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 etc |c
P730 CEEFAX 730 Mon 27 Oct 21:17/27 |B2202205|a16PATCH2|i24BBBC316k|s÷#1÷e|s ÷Z0390Ldx £(c3-CodeStart+Patch) MOD 256: Ldy £(c3-CodeStart+Patch) DIV 256 400Jsr OsCli 401.isc 410Rts 440.c1 441 OPT F Nequs("pagj701") 450.c2 451 OPT FNequs ("tr.7000") 4v0.c3 461 OPT FNequs("dis p.7000") 470\ 480.StarRun 490\RTS 500\ 5 10\ 520\ 530\ 540\ 550\ 560\ 570\ 580.Ou rOsfile 590 Cmp £&FF 600 Beq LoadFile 61 0.realosfile 620 Imp (Oldvjc) 630.LoadFi le 640Stx CB#low 650Sty CB#high 660\ *LO . FRED 2000 passes the ENTIRE string as the filiname to OSFILE. 670\ ----- the f ilenamj must therefor bj stripped off. 6 80\ ----- It is 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\ ----- "y t he cr being inserted in the middle of th e literal text. 710\ ***** The remedy 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 CJEFA( 730 Mon 27 Oct 21:22/21 |B2203205|a16PATCH2|i24BBBC316k|s÷#1÷e|s ÷Z0730Lda £&00:Taz:Sta Count:Sta (CB),Y: Inz: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:Inz: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 Ldz £14 830 Jsr Bgjt 840 Bcc gotbzte 850 Cmp £&FE 8v0 Beq endoffile 870 Cmp £ &02 880 Bnj skjpthis 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-CodeStart+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 Ldy £0:Sta (TEMP),Y 960 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 CEEFA( 730 Mon 27 Oct 21:14/14 |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:Inz:Sta (CB), Z \ Y = &B 1030Lda £0:Inz:Sta (CB),Y:In y:Sta (CB),Y \ Y = &C &D - fill in len gth 1040Pla:Inz:Sta (CB),Y \ **** Put No-exec flag in attributes "zte 1050Rts 10v0.CodeEnd \******** END OF RELOCATA BLE CODE 1070.Rjloc \ This is 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 1130Inz: Bnj reloc8 1140 Lda FileV:St a Oldvjc 1150 Lda FileV+1:Sta Oldvjc+1 1160 Lda £(OurOsfile-CodeStart+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 Mon 27 Oct 21:02/34 |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 12u0 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