A detailed list of differences between CP/NC and ZCN.
General | BIOS | BDOS | CCP | Programs
Renamed ZCN CP/NC, beause it is too different from the original thing. Reset version number to 1.0. Moved system sources to system/ and external commands to extcom/. Moved some programs from utils/ to addcom/, removed the rest of the utils folder. Also moved zselx to addcom/. Removed the support/ folder in order reduce the distribution size. Supported programs will be in a separate package. There is now an "initialization image" containing FORMAT, SYSGEN, and RX and a "regular" image for normal use, where the regular image offers about one kilobyte more space (TOPRAM=C4h). FORMAT, SYSGEN, and RX are also available as external programs.
Changed console screen layout from 120x10 to 80x8 and font from 4x6 to to 6x8. The CRT: device now emulates a DEC VT52 terminal with 8 lines and without hold screen mode, graphics mode, and alternate keypad mode. Moved console input and output logic (I/O redirection) from driver level (term.z, keyboard.z) to BIOS. Removed code that stops output when Control+Symbol are pressed from term.z (now done via ^S/^Q in the BDOS.) Removed mouse support. Removed screen dump routine (it's a text console).
Fix: Setting the drive to '?' in SEARCHFIRST (17) and SEARCHNEXT (18) BDOS functions now matches the file name and only ignores the active user number. I.e. it finds files by all users, but still only those whose file names match. Fix: Console Status (11) BDOS function now returns FFh (not 1), when characters are ready. Fix: Write Random with Zero Fill (40) now fails instead of mapping it to Write Random (34). Fix: Pressing ^C only causes a warm boot in BDOS function 10 (Read Console String), when typed as the first input character. Added IOBYTE support for the AUX: and LST: devices. CON: can be redirected to TTY: or copy to LPT:, as before. In addition, AUX: and LST: can now be redirected to TTY: or CRT:. Setting the IOBYTE is now done by STAT, so removed '<', '>', '|', and related commands. Console Output (2) BDOS function now checks for ^C (warm boot). Console Input (1), Output (2), and Read String (10) BDOS functions now test ^S (stop transmission) and pause until ^Q is pressed. Control characters can now be input on the console and echo as ^char, where char is the control char + 64, e.g. SOH (1) echoes as ^A. Pressing ^X now discards the entire buffer in BDOS function 10 (Read Console String) and erases the last line of input from the console screen. ^U also discards the buffer, but does not erase the line. No longer trying to load COM files from drive A:, if not found on current drive. Left fallback to user 0 for now. Added Read Absolute Record (128), Write Absolute Record (129), and Select Drive (130) BDOS functions for internal use by CP/NC (formatting disks, sysgen, disk editor). Removed ZCN-specific BDOS functions (zcnfunc.z). Hitech C exit() value is no longer stored in (03h), making room for an IOBYTE. The console is now a little bit too slow for 9600 baud (currently about 750 chars per second).
The FORMAT command now expects a /S parameter in order to reserve system blocks. A disk formatted without reserved system blocks cannot be made bootable! Replaced the REXEC command in the initialization image with the RX command that receives a file using the XMODEM protocol. RX is also available as an external command for use with the regular image. Renamed AUTOEXEC.SUB PROFILE.SUB. TPA size (*including* 0-page and stack) is now reported by VER and at boot time. Removed the K3 command. REN expects its arguments as NEW=OLD now. ERA now prompts with "ALL (Y/N)? " when given *.* and erases all only if 'y' or 'Y' is entered. CLS now sends a VT52 clear screen sequence rather than clearing the LCD, so it also works on a terminal. MEMDUMP waits for a key to be pressed before exiting, because there are only 8 lines on the LCD console. SUB files are no longer submitted automatically. Use SUBMIT! Submitted commands are echoed on the console. The USER command expects a valid user number as argument or no argument at all. When no argument is given, it displays the active user number. The CCP prints FOO? when it cannot find FOO.COM. It prints '?' when arguments to an internal command are missing, and ARGUMENT? when a wrong argument is passed to an internal command. STTY 0 now disables the serial line. Removed the SERIAL command. Renamed SYS -> SYSGEN, CBOOT -> REBOOT, REALBEEP -> BEEP. Renamed SERTEST CONNECT. The command exits on ^C. ^\ is no longer special. Removed prompt (%) command, prompt is always A>, B>, etc. Removed internal commands, because they should be external: DUMP, FORMAT, SYSGEN. FORMAT and SYSGEN are still in the installation image, though. Removed internal GET command, there will be an external LOAD eventually. Removed internal commands: MORE, XYZZY, RM, CD. !!, CRLF, POKE, IFPEEK, IFNPEEK, QUITSUB, VDU, NOTE, ", ', #, REM, DF, UMV, UNSYS, CAPSCTRL (Caps and Ctrl are permanently switched). Disabled (but did not remove): BDOSDBG, BATWARN (battery warning is always on).
Standard CP/M commands: STAT.COM DSK: is missing, attributes cannot be changed DUMP.COM complete FORMAT.COM complete PIP.COM in progress, most parameters do not work SUBMIT.COM complete SYSGEN.COM complete Additional programs: DBE.COM simple disk block editor RX.COM XMODEM receiver