80-Bus News


March–April 1984, Volume 3, Issue 2

Page 12 of 51


1 – Move the bytes at #A21 to #A30 inclusive up to #A24 using the I command. 2 – Add the following bytes at #A21: B7 20 12.

3 – Add the following bytes at #A34: 18 E3.

The code should now look something like this:

getblock: ld de,fcb ld c,read seq call jbdos ; New code follows or a 3 set flags jr nz,err 3; eof, so jump ; original code 1d hl,buffer ld de,(arg1) ld bc,128 ildir ld (argl),de ; New code jr getblock ; original code err: ep l oe eet

This appears to work: I’ve had no more problems since patching this in. I also took the opportunity to change the bytes at #996, #9B5, #A50, #A65 and #A8D to #C9. This changes the SCAL ZMRET codes to simple RET codes, and enables the F and P routines to be called from user programs (eg the “:” command in Zeap).

Now for the second problem: the P routine appears to “hang” when the disk is full. The patch ain’t so simple: it requires additional code on the end of Monitor.Com, and where this goes will depend on where your particular copy ends (I had tacked a printer driver onto the end of mine).

1 – Change the bytes at #97C to C3 xx xx where xxxx is some spare memory after your Monitor.Com (the code here should look like this):

ld de,fcb ld c,write seq call jbdos ep 0 3 Set error flags jp z,write block ; Here if error – disk full – New code jp full_error ; original code, no longer executed


2 – Add the following code at address xxxx : 11 5C 00 OF 10 CD 05 00 CD 24 09 EF 44 69 73 6B 20 66 75 6C 6C 2E OD 00 C9.

The code should look something like this:

This is an OCR’d version of the scanned page and likely contains recognition errors.

Page 12 of 51