Enhanced Pico-Dos v1.38 ----------------------- "Enhancements" over OSI's Pico-Dos 1.1 are: True backspace with either Shift-O (underscore, $5F) or the DELete character ("Rubout" key/Backspace on emulator, which is $7F with standard OSI 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 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 standard SYN600 ROM or a 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). With CEGMON, output is through its full-screen editor on boot-up. But if the OSI-style Editor [similar to that in 65D 3.3] is invoked by running Progran 6, output is constrained to being at the bottom of the screen. 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 running OS-65U, including early OSI systems that used ASCII-encoded keyboards, and detect the ESCape key on all of them. 2) Pico-Dos 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 derivitave thereof.] 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). 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". -------------------------------------------------------------------------------------- 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). 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 (causing 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, 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, 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 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 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 during 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.] -------------------------------------------------------------------------------------- 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 The E-P system 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. The E-P system 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 is has been extensively tested, and is believed to be substantially bug-free. This will be the final release. So you are free (as far as I am concerned) to copy and redistribute this package, or to disassemble any part of it, and create or share listings of it if you wish. As an example, if you are curious how the system distinguishes between BASIC error messages, which are masked to seven bits, and the output of BASIC strings, which are not, take a look at the code at $2EC7.