MSCRIPT uses the true 64 column mode of TS-2068, and therefore, the border does not change color during loading and saving. It would be better if a message is printed after “Start tape & press ENTER” to indicate the acceptance of the keystroke. Also, MSCRIPT does not confirm the Restart option, so hours of work may disappear in a fraction of a second.
Fortunately, MSCRIPT does not use the memory from 32000 to about 36000, and we can put our own routines in that range. The following additions will print saving and loading messages and put a layer of protection for Restart function.
8300 CALL A449 ; clear buffer
8303 LD DE,8356 ; address of "Restart" message
8306 LD HL,1700 ; line 17h, column 00h
8309 LD C,1C ; length=1Ch characters
830B CALL A464 ; print the message
830E CALL A3A8 ; wait for a key
8311 OR 20 ; "lower case lock"
8313 CP 79 ; check if "y" is pressed
8315 JP Z,902B ; if "y" then jump to restart
8318 JP 9768 ; return to Command level
831B CALL 990E ; output "Start tape ..."
831E CALL A449 ; clear buffer
8321 LD DE,833F ; address of "Saving" message
8324 LD HL,1700 ; line 17h, column 00h
8327 LD C,0C ; length=0Ch characters
8329 CALL A464 ; print the message
832C RET ; return to Saving routine
832D CALL 990E ; output "Start tape ..."
8330 CALL A449 ; clear buffer
8333 LD DE,8349 ; address of "Loading" message
8336 LD HL,1700 ; line 17h, column 00h
8339 LD C,0D ; length=0Dh characters
833B CALL A464 ; print the message
833E RET ; return to Loading routine
833F - 834A ** SAVING **
8349 - 8355 ** LOADING **
8356 - 8371 Press "Y" to restart Mscript
The above routines will be added just after the normal “MSCRIPT”CODE from tape so that both the original program and the modification can be loaded at the same time. Then, these routines will be moved to their appropriate locations before running the program.
AEFB LD HL,AF09 ; origin
AEFE LD DE,8300 ; destination
AF01 LD BC,0072 ; length
AF04 LDIR ; move
AF06 JP 9000 ; jump to MSCRIPT
AF09 - AF7A ; routines
These routines may be poked into the memory with a simple BASIC program, or the mnemonics may be entered with HOT-Z, AROS or version 1.82 (short, high memory). First enter, load or plug in appropriate software, and then load the MSCRIPT code by LOAD “”CODE. Be sure the MSCRIPT has been customized for your printer interface.
10 FOR X=44795 TO 44922
20 PRINT X;" ";
30 INPUT A
40 PRINT A
50 POKE X,A
60 NEXT X
Decimal Pokes for use with the Basic Loader program shown above
44795 33 44859 164 44796 9 44860 17 44797 175 44861 73 44798 17 44862 131 44799 0 44863 33 44800 131 44864 0 44801 1 44865 23 44802 114 44866 14 44803 0 44867 13 44804 237 44868 205 44805 176 44869 100 44806 195 44870 164 44807 0 44871 201 44808 144 44872 42 44809 205 44873 42 44810 73 44874 32 44811 164 44875 83 44812 17 44876 65 44813 86 44877 86 44814 131 44878 73 44815 33 44879 78 44816 0 44880 71 44817 23 44881 32 44818 14 44882 42 44819 28 44883 42 44820 205 44884 32 44821 100 44885 76 44822 164 44886 79 44823 205 44887 65 44824 168 44888 68 44825 163 44889 73 44826 246 44890 78 44827 32 44891 71 44828 254 44892 32 44829 121 44893 42 44830 202 44894 42 44831 43 44895 80 44832 144 44896 114 44833 195 44897 101 44834 104 44898 115 44835 151 44899 115 44836 205 44900 32 44837 14 44901 34 44838 153 44902 89 44839 205 44903 34 44840 73 44904 32 44841 164 44905 116 44842 17 44906 111 44843 63 44907 32 44844 131 44908 114 44845 33 44909 101 44846 0 44910 115 44847 23 44911 116 44848 14 44912 97 44849 12 44913 114 44850 205 44914 116 44851 100 44915 32 44852 164 44916 77 44853 201 44917 115 44854 205 44918 99 44855 14 44919 114 44856 153 44920 105 44857 205 44921 112 44858 73 44922 116``` A few pokes are also needed to route the program to our modifications: ```code POKE 38812,0 ; direct restart routine to POKE 38813,131 ; routine at 8300h POKE 39016,45 ; intercept loading routine POKE 39017,131 ; to routine at 832Dh POKE 39156,27 ; intercept saving routine POKE 39157,131 ; to routine at 831Bh
The parameters for variables such as window size and page length are initialized when you start or restart the MSCRIPT. To change the initial values, poke the address in the “POKE” column with a desired number.
VARIABLE POKE DEFAULT ------------ ----- ------- Window size 36952 64 Page length 36956 60 Page spacing 36960 6 Left margin 36964 0 Line length 36968 60 Line spacing 36972 1
The printer driver supplied for Aerco IF is set for printers which automatically add a line feed after a carriage return, and it’s just the opposite for the Tasman IF driver. Although most printers have dip switches for either mode, sometimes it’s more convenient to set it by software.
For Aerco IF:
POKE 42859,219
POKE 42860,127
POKE 42861,24
POKE 42862,225
For both IFs:
POKE 42837,0 if printer adds linefeed
POKE 42837,10 if printer doesn't
The keyboard decoding method used by MSCRIPT was explained by Mark Fisher in SWN 2/5. However, there are other characters in the ROM which are not accessible in Timex BASIC, but can be printed using MSCRIPT. Those characters are: CODE 123, CODE 124, CODE 125 and CODE 126. On the Spectrum, these characters are symbol-shifted on F, S, G and A keys, respectively. Please read Fisher’s article for more details.
If you have finished the necessary modifications, save the MSCRIPT code a few times by:
SAVE "MSCRIPT"CODE 36864,8059
Jack Dohaney‘s FAT MSCRIPT loader (SWN 2/4) greatly enhances the clarity of the characters, but a few changes have to be made. Clear any BASIC program you may have in the computer by typing NEW and ENTER. Type or MERGE in the FAT MSCRIPT program. Change the following lines:
5 DATA 017,000,128,213,001, ...
15 ... : SAVE "MSCRIPT"CODE 36864,8059: ...
21 CLEAR 65535: CLS: RANDOMIZE USR 44795
The change in line 5 from “253” to “128” will generate the new character set in the “free” memory (32768 – 33535) so that it will not take up our precious text space.
I would also like to note that the HI (Hanging Indent) command must be followed by a number. The “Y” and “N” option is not available on TS-2068. The “/” function in the user defined print code is also not recognized by MSCRIPT. Each print code is treated as an unprintable character, so this can be a problem when you want to use right justification.
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.