Re: ANN: ZeXcel now running SE Basic!
- From: "Da Smog" <none@xxxxxxxxxxxxxxxxxx>
- Date: Mon, 27 Feb 2006 11:03:23 -0500
Την Thu, 23 Feb 2006 17:51:16 -0500,ο(η) Da Smog <none@xxxxxxxxxxxxxxxxxx> έγραψε:
Here's the patch if anyone would want it :-)
Requires Toolkit 2 and Turbo Toolkit plus the ROMs. The emulator breaks SE Basic's keyword entry (so single key entry is needed) but all other bugs are fixed. Gosh Wonderful works well.... Wonderfully ohhh Gosh! :-P
Also the Pentagon ROM can work fine (without TR-DOS support)
Cheers,
Phoebus
Note that apart from minor error checking there's virtually no check on the filenames (if they exist etc) so take care to actually type the names properly. ZeXcel v. 0.33 is required
----Begin BASIC program-------
10 REMark *******************************
20 REMark * Patch ZeXcel v.0.01alpha *
30 REMark * by Phoebus R. Dokos 2006 *
40 REMark * Requires Turbo Toolkit /TK2 *
50 REMark *******************************
60 :
70 WTV 50,50
80 CSIZE 1,0
90 ROM48K=16384 : REMark Offset of the second 48K ROM
100 rom48k128=32768: REMark Offset of the 48K ROM for 128 mode
110 romIF1=65535: REMark Offset of the second copy of IF1 ROM
120 CLS
130 PRINT "ZeXcel Patch"
140 PRINT "What do you want to patch?"
150 PRINT "Replace 48K Mode ROM (1)"
160 PRINT "Replace 128K Mode's full ROM (2)"
170 PRINT "Replace 128K Mode's 48K ROM only (3)"
180 PRINT "Replace All Modes' 48K ROMs (4)"
190 INPUT "Enter your option (1-4), 0 exits "; option
200 SELect ON option
210 = 1
220 PATCH48
230 = 2
240 PATCH128
250 = 3
260 PATCH12848
270 = 4
280 PATCH48all
290 = 0
300 PRINT "Goodbye!": STOP
310 = REMAINDER
320 PRINT "INCORRECT OPTION"
330 GO TO 120
340 END SELect
350 DEFine PROCedure LOADZ
380 INPUT "Please input the path/filename of ZeXcel executable or enter for default (win1_zexcel_zexcel_obj) "; zexcel$
390 IF zexcel$="" THEN zexcel$="win1_zexcel_zexcel_obj"
400 filelen = FLEN(\zexcel$)
410 startpos = ALLOCATION (filelen)
420 header = ALLOCATION(64)
430 REMark save header in memory
440 OPEN #5,zexcel$
450 GetHEAD 5,header
460 CLOSE #5
470 REMark ACTUALLY load the ZeXcel executable
480 LBYTES zexcel$, startpos
490 REMark First occurence of the 48K Rom in memory
500 rommemory = startpos+236534
510 REMark Now move the patched IF1 ROM (1st occurence) to a safe place
520 if1patched = ALLOCATION (8192)
530 PRINT "Now moving ZeXcel IF1 patched ROM..."
540 REMark done, now continue
550 END DEFine
560 DEFine PROCedure PATCH48
570 LOADZ
580 INPUT "enter the 48K ROM's filename ";romname$
590 patchrom=ALLOCATION (16384)
600 LBYTES romname$, patchrom
610 REMark actually patching
620 PRINT "Patching 48K ROM... please wait!"
630 PRINT "Patching 1st instance...":MOVE_MEMORY patchrom TO rommemory, 16384
640 PRINT "Patching 2nd instance...":MOVE_MEMORY patchrom TO rommemory+ROM48K, 16384
650 PRINT "Reapplying IF 1 ROM...":MOVE_MEMORY if1patched TO rommemory+ROM48K, 8192
660 PRINT "Done!"
670 REMark now clean up allocated memory for ROMs
680 DEALLOCATE patchrom
690 DEALLOCATE if1patched
700 savezex
710 END DEFine
720 DEFine PROCedure PATCH128
730 LOADZ
740 INPUT "enter the 128K ROM's filename ";romname$
750 romlen=FLEN(\romname$): REMark this is to ensure that for +3 ROMS (64K) only the 128K part will be copied and not the +3DOS part
760 patchrom=ALLOCATION (romlen)
770 LBYTES romname$, patchrom
780 REMark actually patching
790 PRINT "Patching 128K ROM... please wait!"
800 REMark The Editor part is second in the complete dump while the 128K part first
810 MOVE_MEMORY patchrom TO rommemory+rom48k128+16384, 16384
820 MOVE_MEMORY patchrom+16384 TO rommemory+rom48k128, 16384
830 PRINT "Done!"
840 REMark Now Clean up patchrom memory
850 DEALLOCATE patchrom
860 DEALLOCATE if1patched
870 savezex
880 END DEFine
890 DEFine PROCedure PATCH12848
900 LOADZ
910 INPUT "enter the 48K ROM's filename ";romname$
920 patchrom=ALLOCATION (16384)
930 LBYTES romname$, patchrom
940 REMark actually patching
950 PRINT "Patching 128K ROM... please wait!"
960 MOVE_MEMORY patchrom TO rommemory+rom48k128, 16384
970 PRINT "Done!"
980 DEALLOCATE patchrom
990 DEALLOCATE if1patched
1000 savezex
1010 END DEFine
1020 DEFine PROCedure PATCH48all
1030 LOADZ
1040 INPUT "enter the 48K ROM's filename ";romname$
1050 patchrom=ALLOCATION (1638)
1060 LBYTES romname$, patchrom
1070 REMark actually patching
1080 PRINT "Patching All 48K ROMs... please wait!"
1090 PRINT "Patching 1st instance...": MOVE_MEMORY patchrom TO rommemory, 16384
1100 PRINT "Patching 2nd instance...":MOVE_MEMORY patchrom TO rommemory+ROM48K, 16384
1110 PRINT "Reapplying IF 1 ROM...":MOVE_MEMORY if1patched TO rommemory+ROM48K, 8192
1120 PRINT "Patching 128K's SPECTRUM mode...":MOVE_MEMORY patchrom TO rommemory+rom48k128, 16384
1130 REMark Now Clean up patchrom memory
1140 DEALLOCATE patchrom
1150 DEALLOCATE if1patched
1160 savezex
1170 END DEFine
1180 DEFine PROCedure savezex
1190 INPUT "Please enter new filename for ZeXcel or press ENTER for the default (win1_ZeXcel_New_obj) ";newfile$
1200 IF newfile$="" THEN newfile$="win1_ZeXcel_New_obj"
1210 SBYTES newfile$,startpos, filelen
1220 OPEN #5, newfile$
1230 SetHEAD 5,header
1240 CLOSE #5
1250 DEALLOCATE header
1260 DEALLOCATE startpos
1270 END DEFine
--
Χρησιμοποιώ το επαναστατικό πρόγραμμα αλληλογραφίας της Opera: http://www.opera.com/mail/
.
- References:
- ANN: ZeXcel now running SE Basic!
- From: Da Smog
- ANN: ZeXcel now running SE Basic!
- Prev by Date: Re: Flipside of Dominick Hide
- Next by Date: ANN: Tipshop updated Tuesday, 28 February 2006
- Previous by thread: ANN: ZeXcel now running SE Basic!
- Next by thread: Spectrum ULAs available
- Index(es):