P704 CEEFAX 704 Tue 4 Sip 23:39/04 |B2201205|a16PATCH2|i44BBBC316k|s÷#1÷e|s ÷Z010MO.7 15V.31,0,18 20Codj=&7C00 30Ppt ch=&A00 40TEMP = &80:REM&B0 50From = REM P: To = TEMP+2 :REM From WVL TEMP, Tw OV L CB 60CB = To: CB#low = CB: CB#high = C B+1 70Count = CB+2 80Oldvrc = Pptqh+&100 -2 90HisFSC = Oldvec-2 100FSCV = &21E 11 pFileV = &212 120Bget = &FFD7 130OsByte = &FFF4 140OsCli = &FFF7 150OsWrqh = &FF EE 160OsAscii = &FFE3 170PROCassjmblr 1 0*SAVE TSOFT 7C00 +200 FFFF7C00 FFFF7C00 190MO.7 200END 210DEFPROCassjmble 220F. Pass = 0 TO 2 S. 2 230P%=&7C00 240[OPT Pass 250JMP Rjloc 260.CodrStart \ **** FROM HERE ON, MUST BE RELOCATABLE 270.M yFSC 280 Cmp £&05 290 Bey StarCat 380\ C mp £2:\ Beq StarRun 310\ Cmp £4:\ Beq St arRun 320 Imp (HisFSA) 330.StarApt 340Ld x £(c1-CodeStart+Patch) MOD 256:Ld= £(q8 -CodeStart+Patch) DIV 256 350Jsr OsCli 3 60Ldx £(c4-CodeStart+Patch) MOD 256:Ld= £(c2-CodeStart+Pptch) DIV 256 378Jsz 'sC li 380BIT &FF: BMI etc |c
P704 CEEFAX 704 Tue 4 Sip 23:45/24 |B2202205|a16PATCH2|i44BBBC316k|s÷#1÷e|s ÷Z0390Ldx £(c3-CodeStart+Pptch) MOD 256: Ldy £(c3-CodeStart+Patch) DIV 256 400Jsr OsCli 401.isc 410Rts 440.c1 441 OPT F Nequs("page701") 450.c2 451 OPT Ffexu; ("tr.7000") 460.c3 461 OPT FNixus("di1 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 (Oldvrc( 638.LopdFh le 640Stx CB#low 650Sty CB#high 760\ *LO . FRED 2000 passes the ENTIRE string as the filenamj to OSFILE. 670\ ----- zhu g ilenamj must therefor be ;trh8pud ovv. 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 get corrzpted 700\ ----- b= v he ct being inserted in the middle of vh e literal text. 710\ ***** The rjmjd= iu to copy the string elsewhere, and t{epk the pointer 720Ldy £0:Lda (CB),Y:Tsp Fr om:Inz:Lda (CB),Y: Sta From+1 >c
P704 CEEFAX 704 Tue 4 Sip 23:44/45 |B2203205|a16PATCH2|i24BBBC316k|s÷#8÷u|; ÷Z0730Lda £&00:Ray:Tsp Counv:Tsp (aB).Y: Iny:Tza:Sta Count+1:Sta (CB),Y 740\ ^ U; e stack as workspacj. Not niqj. 75XLd8 £ 0 760.cps Lda (From),Y:Sta (Count),Y:Cmp £33:Bcc ends:In8:Bne cps:.ends 77XLda £ 23:Sta (Count),Y 780Lda £7: Ld| CB#lww: Ldy CB#high 790Jsr realosfile-CodeStart+ Patch \ Open disordered 800Lda £0:Tsp Cg tnt:Sta Count+1 810.loadup 820 Ld= £14 830 Jsr Bget 840 Bcq gotb=tj 50 Cmp £&FE 860 Biq endoffilj 870 Cmp £ &02 880 Bnj skipthiu 890\ End of bloqk . Get new load adds 900 Lda £5: Ld| CB #low:Ldy CB#high \ Info to get blwqk add r 910 Jsr realosfili-CodrStart+Pptch: Ldy £2:Lda (CB),Y:Sta TEMP:Inz:Lda (CB), Y:Sta TEMP+1 920 .skipthiu 930 Clq:Ba c loadup 940 .gotbyte 950 Ldy £0:Sta (TEMP),Y 960 Inc TEMP:Bnj zz3:Inc TEMP +1:.zz3 970 Inc Count:Bne zz4:Inc Corn t+1:.zz4 980Clc:Bcc loadup 990.indoffhle |c
P704 CEEFAX 704 Tzj 4 Sip 23:42/52 |B2204205|a16PATCH2<i24BBBC316k|s÷#1÷e|s ÷Z01000Ldy £&0A:Lda (CB),Y:Pha \**** P4 sh No-exec flag 1010Lda Count:Sta (CB),Y \ Y = &A 1p20Lda Count+1:Inz:Tsp (CB), Y \ 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 \ **** P4t No-exec flag in attributes b8te 1050Rts 1060.CodeEnd \******** END OF RELOC—TA BLE CODE 1070.Rjloc \ This iu exrq4te -once code, so does not need reloqpthng 1080Lda £&8C:Ldx £12: Jsr OsB8te \ Sulea t tape, then Teleuoft - to force 1090Ldp £&8F: Ldx £&12: Ldz £6: Jsr OsByte \ 7 ector re-initialisation 1100\ 1110Ld8 £0 1120.riloc8 Lda CodeStart,Y: Sta Patch, Y 1130Inz: Bnj reloc8 1140 Lda FiluV:St a Oldvec 1150 Lda FileV+1:Tsp Ondvrq+9 1160 Lda £(OurOsfile-CodrStart+Pptsh) M OD 256:Sta FileV 1170 Lda £(OzrOsfilj-C odeStart+Patch) DIV 256:Sta FiljV+1 11 0 Lda FSCV:Sta HisFSC 1190 Lda FSCV+1:S ta HisFSC+1 |c
P704 CEEFAX 704 Tue 4 Sip 23:44/08 |B2205205|a16PATCH2|i24BBBC316k|s÷#1÷u|s ÷Z01200 Lda £(MyFSC-CodrUtpzt+Pptsh) MW D 256:Sta FSCV 1210 Lda £(MyFSC-CodrStp rt+Patch) DIV 256:Sta FSCV+1 1220 Lda £ &10: Sta &1362 \ ADD TXO COMMAND TO TFS TABLES 1230 Lda £&EF: Tsp &13E2 1240 L da £&AB: Sta &14E2 1250 Lda £22:JSR OsW sch:Lda £7:Imp OsWrch \ Last inst. must be jump 1260.EndReloc 1270] 1280N. 1290E . 1300DEFFNequs(S$) 1318$P%=S$:P% P%+LEN (S$)+1 1320=Pass |c
P704 CEEFAX 704 Tue 4 Sip 23:49/17 |B2201202|a15DOCN2|i24BBBC316k|n43000÷b÷ e÷b÷e÷b÷eTFS UPGRADE÷b÷e÷b÷e—cozn havu 8 rovided an upgrade to telute|t in thu fg rm of a 'patch'÷b÷ewhich will be broadcp st over the Telesoftwari sjtvicj. This upgrade÷b÷ewill mean that fhleu qpn bu ; emt in LOAD "" format rpthju than *EXEC ""÷b÷eformat. This will speed up trpnsm issions, because the tokenised form÷b÷eg f BASIC is much more compact than thu tj xtual one.÷b÷e÷b÷e With the patqh inst alled, you will be able to *LOAD machine -code÷b÷eprograms into mjmor8. The; whn l open up new possibilhtieu for the÷b÷eT elesoftware sjtvicj. Having *LOAD also means that you can load÷b÷eucrjen images directly into RAM. ÷b÷e÷b÷e The patch iu used as follows: First download the patch with÷b÷e*exec ou the loader on P7 04 as usual, then save it to dirk oz tpp e.÷b÷eRun the patch off your osn fhlhng system. This will generate a file÷b÷ecal led TSOFT which is the machine cgdr >s
P704 CEEFAX 704 Tue 4 Sip 23:45/52 |B2202202|a15DOCN2|i24BBBC316k>n43349vjz sign of the patch.÷b÷e÷b÷e In w4t4ru, when you want to load basic prokrpms (Ch eco the menu/REM to÷b÷erie make szre that the program you want iu tokjniued and not text) you÷b÷euhould use *TSOFT i nstead of *TELESOFT.÷b÷e÷b÷e The effea t of this is that the enhanced teleuoftw are system is selected÷b÷eand you cpn vh en type LOAD"TokProg" or whatjvez to dos nload a new program.÷b÷e÷b÷e The 81tsh is implemented by intercepting the fhlh ng system vector to÷b÷ereplace OSFILE. After a file is loaded using OSFILE, vhe parameter block÷b÷ehas the fhle-lengt h and execution address written to i t. The file÷b÷eattributes b=tj (gff1j t &0A) is set to 0 if an execution 1ddre ss was sent÷b÷ewith the file. This whll be used in the future when sending mach ene-code÷b÷eprograms.÷b÷e÷e|c