C128 ROM RELEASE
Modifications have been made to 318018-02 BASIC LOW, 218019-02 BASIC HIGH, 218020-03
Editor, Code. The new ROM part numbers are as follows:
- 16KB ROM Set (Socket number valid for original PCBs)
- 318018-04 BASIC LOW $4000-$7FFF, U33 CHKSUM=9A40
- 318019-04 BASIC HIGH, Monitor $8000-$BFFF, U34 CKSUM =6F80
- 318020-05 EDITOR, KERNEL, CP/M $C000-$FFFF, U35 CKSUM=EEC4
- 315078-03 DIN ED, KERNEL, CP/M $C000-$FFFF, U35 CKSUM=E4C4
32KB ROM Set (#2 below contains C64 Code)
- 318022-02 BASIC, Monitor $4000-$BFFF, U34 CKSUM=09C0
- 318023-02 EDITOR, KERNEL, CP/M $C000-$FFFF, U32 CKSUM=F324
This ROM set replaces the current set entirely, they are not to be mixed. Each ROM contains
a revision status byte (at $7FFE, $BFFE, $CFFE). Original ROMs contain $00 in these locations,
the update ROMs contain $01.
The following changes have been implemented:
PART NUMBER 318018-04 --BASIC LOW ($4000-$7FFF)
- LIST and DELETE commands. Previosly they didi not report as errors certain non-numeric characters passed as arguments, such as 'LIST A'. This has been corrected totally in-line by adjusting an erroneus relative branch in the 'RANGE' subroutine.
- CIRCLE command. Previosly an unspecified Y-radius defaulted to the X-radius (as it should), but the X-radius value had already been scaled for the X-axis and not the Y-axis. This has been corrected totally in-line by scaling the radii after the defaults have been established.
- RS-232 STatus. Previosly accessing ST after RS-232 I/O resulted in an incorrect status being returned from, and a zero written to, location $10A14, possibly corrupting the BASIC variable area. This was a result of BASIC calling the Kernel routine 'READSS' with the incorrect RAM bank in context. This has been corrected totally in-line by substituting the correct BASIC subroutine call.
- CHAR command. Previosly using CHAR with the 80-column text screen (GRAPHIC mode 5) resulted in RAM corruption at locations $D600 and $D601 of RAM bank 0 (the BASIC text bank) due to BASIC calling the Editor PLOT routine without the I/O block in context. This has been corrected utilizing two patch subroutines.
- RENUMBER command. Previosly the pass 2 routine, which was to pre-scan BASIC text and report 'out of memory' errors prior to actually changing anything, was seriosly flawed. This has been corrected utilizing a patch subroutine.
- DELETE command. Previosly did not limit-check itself when moving down BASIC text, therefore it was possible to crash when DELETEing lines at or near the top of memory (near the MMU configuration registers). This has been corrected utilizing a patch subroutine. Also, DELETE previosly exited to MAIN via 'JMP', effectively ending the avaluation of the current command string. This has been corrected by substituting an 'RTS', allowing direct commands like 'DELETE 10:PRINT"DELETED LINE 10", to work correctly.