NEWDOS/80 v2.0 ZAPS (Unofficial)


Add “,B” parameter to PDRIVE to Change in Resident RAM Only

This zap allows temporary ‘in memory’ change of the PDRIVE table thereby not altering the disc record.

Use PDRIVE as normal except ,B is substituted instead of the regular ,A in the PDRIVE command viz: PDRIVE,0,1=7,B.

This will alter the PDRIVE configuration in memory (you can leave the write-protect tab on) and you can do this as many times as required for the next time you RESET your PDRIVE table will not have been affected.

You could then copy SYS16/SYS onto other work discs in use.


Model I:

SYS16/SYS,02,F8

change
FE 41 21 20 06
to
C3 C0 51 00 00

SYS16/SYS,04,D4

change
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 
00 00 00 00

to
xx xx xx xx FE 41 12 20 03 C3 F1 4F FE 42 C2 F7 4F
 
3E 41 12 77 C5 E5 01 00 07 21 E2 4D 71 23 10 FC E1
 
C1 C3 F1 4F


Model III:


SYS16/SYS,02,E8

change
7E FE 41 12 20
to
7E C3 CB 51 20

SYS16/SYS,04,DF

change
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 
00 00 00 00 00 00 00 00 00 00 00 00 00
to
FE 41 12 20 03 C3 E0 4F 3D FE 41 20 F8 C5 E5 01 00
 
07 21 D3 4D 71 23 10 FC E1 C1 18 E3 02


Fix the CLEAR Command – Model I

This zap, by Bob Seaborn based on Tony Domigan’s patch to the Model III, converts the “CLEAR” command to respect HIMEM and only clear the memory from 5200H to HIMEM on the DOS command “CLEAR” while the DOS command “CLEAR *” will clear all memory from 5200H ta FFFFH and reset all user routing.

SYS14/SYS,3,70

change
7E FE 0D 28 15
to
7E C3 75 51 15

SYS14/SYS,4,88

change
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
to
FE 24 CA 8B 50 FE 0D C2 76 50 2A 11 44 22 AE 50 E5 D1 21 FF FF C3 A6 50

Do not display NEWDOS/80 Banner on Boot – At least Model I

SYS0/SYS,12,C3

change
03 BF B4
to
03 03 B4

What’s going on here? 03H is the delimiter to end the display of a message, so this simply puts the END OF MESSAGE delimeter as the first character in the message


Change the default CHAIN file Extension from JCL to CHN – At least Model I

SYS1/SYS,04,BD

change
44 4A 43 4C 54
to
44 43 48 4E 54

What’s going on here? 4A 43 4C is simply “JCL” in ASCII. This replaces what DOS looks for from JCL to “CHN” (43 48 4E).


Display DIRectories without Clearing the Screen – Model I and III

SYS8/SYS,00,DE

change
51 CC 8F 50
to
51 21 8F 50

What’s going on here? 508FH is likely a screen clearing routine. So this changes the code from a GOSUB (CC = CALL Z,xxxx) to the routine at 508FH, to simply loading that routine address into a variable (21 = LD HL,xxxx) and not going there.



Fix the CLEAR Command – Model III

This zap, by Tony Domigan, converts the “CLEAR” command to respect HIMEM and only clear the memory from 5200H to HIMEM on the DOS command “CLEAR” while the DOS command “CLEAR *” will clear all memory from 5200H ta FFFFH and reset all user routing.

SYS14/SYS,3,81

change
7E FE 0D 28 15
to
7E C3 87 51 15

SYS14/SYS,4,88

change
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
to
FE 24 CA 8B 50 FE 0D C2 76 50 2A 11 44 22 AE 50 E5 D1 21 FF FF C3 A6 50

Boot In Lower Case – Model III

SYS0/SYS,11,2E

change
48 28 05 21
to
48 00 00 21

What’s going on here? The routine 5 bytes after the 2805 instructions executes LD HL,4019H (which is the memory location for the CAPS LOCK toggle) and then executed RES 0,(HL) to turn off bit 0, therefore requiring UPPER CASE only. By putting 00 00 instead of the 28 05 (which is JUMP forward 5 bytes), that routine isn’t run.



Boot in 4MHz on the Model 4 – Model 4

1. Apply this Zap using SUPERZAP:

SYS0/SYS,13,B4

change
00 00 00 00 00 00 00 00 00 00 00 00
to
3A 10 42 F6 40 32 10 42 C3 B6 48 00

What’s going on here?

3A 10 42
LD A,(4210H)
Load the value held at the memory location 4210H into Register A
F6 40
OR 40H
Turn on Bit 6 (by ORing whatever is in Register A with 0100 0000). Bit 6 tells the Model 4 you are in high speed
32 10 42
LD (4210H),A
Put the modified byte back into 4210H
C3 B6 48
JP NZ,48B6H
Jump to 48B6H if the NZ Flag is set

2. Apply this Zap using SUPERZAP:

SYS0/SYS,11,DF

change
C3 B6 48
to
C3 A8 50

What’s going on here? C3 nn nn means JUMP (actually Jump if the NZ flag is set) to a memory location. So this is saying JUMP to 50A8 instead of 48B6.


3. Execute SYSTEM,0,BJ=2


Correct date & time updating on warm boot – Model 4

SYS0/SYS,02,20

change
1E 20 0D 36 1E 21
to
19 20 0D 36 19 21

Allow the date in DD/MM/YY format – Model Unknown

SYS0/SYS,12,2B

change
20 ED
to
00 00

SYS0/SYS,12,3E

change
20 ED
to
00 00

SYS0/SYS,13,4E

change
4D 4D 2F 44 44 2F
to
44 44 2F 4D 4D 2F

Allow the date in DD/MM/YY format in the FORMAT command – Model Unknown

SYS6/SYS,12,45

change
32
to
34

Increase Drive Delay from 1/2 Second to One Second – At least Model I

SYS0/SYS,04,C3

change
06 80 CB
to
06 FF CB

What’s going on here? This is a delay loop. 80H is 128. FFH is 255. So it’s just doubling what used to be there..


Change the Exit Command on EDTASM from B to Q – At least Model I

EDTASM/CMD,07,59

change
5C 42 F8
to
5C 51 F8

What’s going on here? Just changing the character that the exit routine calls from an ASCII “B” to an ASCII “Q”. You can pick whatever ASCII value you want.


Change the Cursor on EDTASM from * to a – At least Model I

EDTASM/CMD,05,10

change
3E 2A CD
to
3E 5E CD

What’s going on here? Just changing the cursor from ASCII 2AH to ASCII 5EH. You can pick whatever ASCII value you want.


Change the Modification Cursor in SUPERZAP to a faster smaller blinking block – At least Model I

SUPERZAP/CMD,09,37

change
3E BF CD
to
3E 8F CD

What’s going on here? Just changing the cursor from ASCII BFH to ASCII 8FH. You can pick whatever ASCII value you want.


Change the Found Cursor in SUPERZAP – At least Model I

SUPERZAP/CMD,03,86

change
3E 95 CD
to
3E BF CD

What’s going on here? Just changing the cursor from ASCII 95H to ASCII BFH. You can pick whatever ASCII value you want.


Do not Display the Banner when Entering BASIC – At least Model I

BASIC/CMD,16,A1

change
1F 44 49
to
1F 03 49

What’s going on here? 03H is the delimiter to end the display of a message, so this simply puts the END OF MESSAGE delimeter as the first character in the message


Change the BASIC2 Command to LEVEL2 – At least Model I

SYS1/SYS,02,7C

change
00 42 41 53 49 43 32
to
00 4C 45 56 45 4C 32

What’s going on here? 424153494332 is just “BASIC2” in ASCII so we are changing it to “LEVEL2”