Enhanced Pico-Dos v1.42 (Disk image revision a) ----------------------- "Enhancements" over OSI's Pico-Dos 1.1 are: True backspace with either Shift-O (underscore, $5F) or the Rubout key (Backspace on emulator), which is $7F with the standard OSI and the C1S monitor ROMs ["Rubout" is also $5F with CEGMON; with the UK101 original ROM, it is $1C.] 9 program slots available, instead of 8 Numeric expresions accepted for program numbers, not just single-digit numeric literals "LOADRUN " command to chain programs or load and run in one step Error messages show as two letters, not a letter and graphic symbol, but graphic characters can still be PRINTed to screen as strings [One additional error message, ML ERROR (for Multiple Load), is added, as described later in this document.] Pause output of listings, etc. with Control-S (as long as Control-C is not disabled by a value POKEd to 530) Runs on C1P (with the standard SYN600 ROM or a substantially similar derivitave of it like Dabug III, or with CEGMON) and also on C2-4P/C4P with CEGMON installed, and on the UK101 (with CEGMON or the original MONUK01 ROM) [As of version 1.42, it can also run on systems with the Aardvark "C1S" ROM, which differs enough from the SYN600 to have previously prevented that. The BASIC prompt will remain the standard "OK" rather than "ready", but output will be routed through the C1S full-screen output driver when the system is booted. Be aware, though, that many games for the C1P are not fully compatible with that driver, since it's bottom row of output is one row lower than other drivers (starting at $D385 rather than $D365), resulting in misalignment between PRINTed characters and those POKEd to the screen. The BASIC games on this disk have been modified where needed so that they will display correctly with the C1S, but Program 4 (Mini-Gomoku) has not been, nor have many games from other sources. However, starting the Editor (with Program 6) will route output through the standard OSI driver, making game programs work properly.] Warm start without the first following command producing an error message even if valid, and with access to the floppy disk retained 65D "A*" prompt accessible via LOAD 0 command ----- Commands supported at the 65D prompt include: the usual CAll and SAve sector commands, and full track EXamine Sector DIrectory of tracks, disk SElect, HOme head, disk or track INitialize EM command starts "cassette" version of Extended Monitor ("J" command added to EM to return to 65D) Integrated track zero read/write functions with ZE command (e.g. ZE R4200 reads track zero of the currently SElected disk to address $4200, ZE W4200/2200,8 writes 8 pages to track zero from $4200 with $2200 as the load address) Return to Basic or EM with RE B or RE E, or simply RE, or to Monitor ROM with RE M (Return to 65D from Monitor at $2A51, not at $2547, or to BASIC or EM at $0000) Restart Basic (reboot disk) with BA command [If the Editor had been started on a system with CEGMON, the screen will clear.] XQ command loads 1 to 4 tracks to memory starting at $02FB and begins execution at $0300 (the 6th byte). The 5th byte must contain the number of tracks to load (1-4) [A reboot would generally be needed afterward.] Even IO device selection and MEmory I/O address setting are functional (devices 3 and 4 not implemented), although of very limited utility, as BASIC's input and output do not go through the 65D I/O distributor. ------------------------------------------------- Programs on this diskette image: 1) 6502 Disassembler Enter the starting address in hex, and it displays output until you hit the ESCape key. I find this can be preferable to always filling a whole screen. The code was written so it could run unchanged on all OSI systems, from a cassette-based C1P through a Challenger III with hard drive and multiple users running OS-65U, including early OSI systems that used ASCII-encoded keyboards (although that may depend on details of the specific keyboard used), and detect the ESCape key on all of them. 2) Pico-Dos 1.1 Replicator program One reason Pico-Dos was never widely used is that it had no ability to copy itself, or even to format disks that it could use to store programs. No apparent ability, anyway. This heavily commented program demonstrates that it could be done, and does it. It creates byte-for-byte copies of OSI's original Pico-Dos "blank" diskette, which contained Pico-Dos 1.1 and eight "dummy" programs (e.g. " 10 REM PROGRAM 1"). [Pico-Dos 1.1 runs only on the C1P with the original SYN600 ROM or a close derivitave thereof.] This program does not produce copies of this "Enhanced" Pico-Dos disk, as it now makes clear, and is not needed to do so. 3) Hex Fifteen Puzzle A version of the classic "15 Puzzle" that used to be a common novelty, which consisted of 15 numbered plastic pieces that slid around in a frame, the object being to arrange the pieces in numerical order. In this version, the numbers 10 through 15 are replaced with the hexadecimal digits A through F. Type the number or letter that you want to move, and it moves (that's why only single characters could be used). Try to get them in numerical order in the fewest possible moves. When everything is arranged right, you are told how many moves it took. The starting position will always be solvable. This program will run on the C1P, on the C2-4P/C4P, and on the UK101 (with either 1k or 2k of video RAM) as well. It will also run without changes if copied to OS-65D. 4) Mini-Gomoku Originally published by Orion Software Associates in 1980. You play black, the computer plays white. The object of the game is to get five "stones" of your color in a row, either vertically, horizontally, or diagonally. Played on 10 x 10 board (instead of the regulation 19 x 19), since that is what would fit on the C1P screen (and it also simplifies the entry of moves). Enter your moves by typing the letter (row) and number (column) of the location where you want to place your stone. Then keep your eyes on the screen as the computer quickly responds. It is a good player, winning is not easy at all. Runs on either C1P or C(2-)4P systems. On systems with a cassette port, a stand-alone cassette version of the program can be generated by LOADing the program and entering RUN 10. Note: I (bxdanny) wrote programs 1 to 4, but the game-playing logic used in Program 4 was copied from a BASIC version printed in Personal Computing magazine. 5) Monster Maze This excellent Pacman-type game was written by Dave Edson (who also wrote some well-known PC games and has been a member of the OSI Forum) and was distributed by Aardvark. This is the original C1P version of the game; the WinOSI emulator comes with a C2/C4 version in the "ML-load" folder. Controls are as listed in the program remarks: Q for up, A for down, V for left, B for right. You can also use 0 (zero) for left and colon (hyphen on the PC keyboard in WinOSI) for right, which will allow you to keep your two hands further apart and so may be more ergonomic. Pressing "R" at the end of the game restarts it (as is also the case for programs 7 and 9). Now supports custom characters using Thomas Buescher's programmable character generator board. 6) Editor loader See "The Editor" below. 7) Cage 8) Pinball 9) OSI Grand Three games from Victory Software, by Alan Stankiewicz and (for programs 7 and 9) Bruce Robinson. The last two are also included with WinOSI in separate C1P and C4P versions; the versions here are compatible with both types of system. The two shift keys are the main controls for all three games. In Pinball, the spacebar launches the ball, and Rubout restarts the game when it is over. The other two restart with "R". [Note: Program 9 will sometimes falsely register a "miss" in catching a jumper in the game; this seems to happen in all versions of the game. If anyone knows a solution, please post it on the OSI Forum (https://osiweb.org/osiforum), or send me a PM there.] -------------------------------------------------------------------------------------- The Editor Program 6 loads a program editor that is similar to the one found in OS-65D v3.3. Once Program 6 has been run, entering ! in immediate mode will bring up that line for editing (or the next line after the specified one if the specified line dosn't exist, as with 65D 3.3). Entering !! will bring up the same line for editing again, and just ! will bring up the following line. Most of the editing keys used with 3.3 work here as well: control-F moves to the front of the line, control-R to the rear, and control-H moves the cursor left one character; either control-L or control-P will move right one character. (Control-T and Control-I are not implemented, sorry.) Either the DELete/Rubout key or (except on an original-ROM UK101) an underscore will delete the character under the cursor, or immediately to its left if the cursor is at the end of the line. Unlike with the 3.3 editor, new characters cannot be added within a line if the 71-character input buffer is already full (which would cause the rightmost characters to be lost). And when is hit when finished editing a program line that spans multiple screen lines, the cursor will always move to a blank line. But on systems with CEGMON or the C1S ROM, there is a cost to this: when the Editor is enabled, screen output reverts to the standard OSI output routine, which always scrolls text up from the bottom of the screen; it will no longer be possible to PRINT directly to areas of the screen other than the last row normally used for text. For this reason, when running Program 6 on systems equipped with CEGMON or C1S, you will be asked to confirm that this is what you want. By default, while entering or editing lines with the Editor active, the SAVE flag is ignored, so that extraneous characters are not written to the tape/serial port. However, this behavior can be modified by setting a flag in Program 6, namely setting EK=1 (or any non-zero value) in line 13 or 14 before running the program. This will allow recording of, for example, data-entry sequences (responses to INPUT statements, which cannot utilize the added editing features), including use of the DELete/Rubout key. (You should not try to record program editing, as the results will be extremely confusing.) SAVE mode during LIST and PRINT output works normally without making this change. On systems with CEGMON, it remains possible (with one caveat) to use CEGMON's built-in editor, for example to edit a previously-entered immediate-mode line, even after enabling the OSI-style Editor. The caveat is that, when the screen scrolls wile entering a line, you will need to move the edit cursor up one line (with Control-S) to compensate, since CEGMON is not monitoring the OSI screen-output driver. (This use of Control-S durimg input does not conflict with its use to pause output, as from PRINT and LIST.) BTW, a mnemonic I use to remember the functions of the A, S, D and F control keys under CEGMON is "Aback, Soar, Don't copy, and Fall". [Note: On the original-ROM UK101, underscore/Shift-O is a normal text character, but it will incorrectly appear to delete characters when running this software without the Editor loaded, so load the Editor right away on such a system. That will also make deleting characters around the left margin diplay correctly, which it otherwise doesn't on that configuration.] -------------------------------------------------------------------------------------- Disk Copier On Track 39 is a version of the standard OSI diskette copier for OS-65D, modified to work with the XQ command in Enhanced Pico-Dos. It does require at least two drives to work, as it is not a single-drive copier. To run it, simply type LOAD 0 followed by XQ 39 after booting the system. When copying is complete, the system should be rebooted. -------------------------------------------------------------------------------------- Added error message If you try to LOAD a program from disk from within another program (but don't use LOADRUN), you will receive the new error message ?ML ERROR. This is intended to stand for Multiple Load error. In truth, ML is one of a very limited number of possible "new" error messages, each consisting of the second letter or character of one error message, and the first letter or character of the next one. ML is actually the M of TM (Type Mismatch) plus the L of LS (Long String). It is similar in this respect to the FS (Full Stack) error in OS-65U, which actually consists of the F from NF (NEXT without FOR) plus the S from SN (Syntax error). Hexdos also uses a similar scheme for adding error messages. -------------------------------------------------------------------------------------- Startup configuration options E-Pico-Dos has the ability to automatically run Program 1 on boot by making a one-byte change to Track 0. To do this, you can use the following commands: LOAD 0 ZE R4200 EM @425C/F0 D0 (you type @425C and D0, "/F0 " is output by the computer) J ZE W4200/2200,8 There is actually a third startup option, set by also changing $425D to $06, but I don't think anyone will want to use that, as it creates a totally "locked" system with no access to immediate mode at all. Typing just in response to an INPUT statement will then cause the INPUT prompt to be reissued, which was the intended purpose. However, anything else that would cause an exit to immediate mode (a STOP or END statement, reaching the end of the program, or an error message) will instead cause an endless loop of error messages, unless the contents of locations 4 and 5 are first restored to their normal values. Control-C will of course be disabled if this mode is enabled. -------------------------------------------------------------------------------------- Sorry, source code is not available, for the simple reason that it doesn't exist. E-Pico-Dos is something of a hodge-podge of unmodified OSI code, my original code, and modified versions of OSI code. Almost all of my changes were entered as hex codes via the Extended Monitor. I did release source code for an earlier version of the Editor, in previous posts in the OSI Forum thread to which this package was posted, and I will tell you that only a few bytes in that were changed in creating the current version. But there is no overall source code for the current release, and I am not interested in creating it. I am also not interested in dealing with the legalities of license agreements, so you can consider all of my work on the present package to be released to the public domain. It has been extensively tested, and is believed to be substantially bug-free. Thanks to OSI Forum members davisgw and nama for testing that helped me get rid of a major bug involving access to the second disk drive. That last significant bug was eliminated with version 1.40. So why is there now a 1.41, and a 1.42? The purpose of 1.41 was to provide support for a modification I proposed to the 600D Superboard discussed in April 2024 in the OSI Forum online), which provides built-in support for switching output between 24-character and 48-character text modes without the need to load extra software. As of that version, E-Pico-Dos can be be warm-started after switching modes, and backspacing and editing will continue to work properly. Version 1.42 is primarily to make the system compatible with the so-called C1S monitor ROM, which it had not been. Program 5 (Monster Maze) in this version also includes support for Thomas [Buescher]'s programmable character generator board, making the player's character and the "monsters" appear like Pac-Man and his "ghosts" on systems equipped with that board, instead of like a stick-figure man and airplanes. [A version 1.41a with this support had previously been uploaded to another thread on the OSI Forum. The version here adds a code snippet to clear out the redefined characters - see the program listing.] Version 1.42 will also now: - Produce an error message (?FC ERROR) if the command LOADRUN 0 is given. Previously, this was treated as equivalent to LOAD 0. - Clear certain flags (LOAD, SAVE, BASIC Control-C/Control-S disable, and CEGMON edit-cursor on) to zero if the system is rebooted using the BA command. Previously, their state was simply left unchanged.