This disk contains a collection of programs extracted from the CPMUG (CP/M Users Group) disk archive. They were selected because they are specific to the VDM, Sol, or Northstar disk controller. There are many other useful programs in that collection that don't appear here but are generic CP/M programs. Many of the programs were modified slightly to make them work better on the Sol. SPAT -- This program is from CPMUG001, although it appears to have had a very long lineage after that. It is a simple sector viewer/ editor that takes advantage of the VDM display. I've modified the code from CPMUG001 to work with the Sol keyboard, and I've generalized a few constants to allow changing the number of disks, the tracks/disk, and the sectors/track more easily. I've set it to default to a 35 track, 5KB/track disk system, which works well for Solace. ED16 -- This is a patched version of the standard "ED.COM" editor. CPMUG006 and CPMUG029 both had brief notes describing how to patch ED to perform the P (page) command for terminals with 16 rows of text instead of 24. Although those notes were for CP/M 1.3 and 1.4, a similar patch at a different address works for the ED that comes with CP/M 2.2. The patch is to change 17DA: 21 17 00 LXI H,0017 to 17DA: 21 0F 00 LXI H,000F BASIC/5 -- These files came off of CPMUG011. They are a hacked version of the cassette BASIC/5 program that have given BASIC/5 the ability to load and store files to disk. While they were at it, they added some drawing commands that are specific to the peripheral hardware of the author so are of no general use. In the bit I've played with it, it also seems to have defeatured some of BASIC/5. Read "BASIC/5.DOC" for some details. Interestingly, the core floating point package is very similar, but not identical, to the floating point routines that appear in the PROCCALC.ASM sources of CPMUG017. BASIC/5.ASM is more completely commented, though. FOCAL.ASM -- This comes from CPMUG016. Quoting the source code: ; A FOCAL INTERPRETER FOR THE 8080 ; ; WRITTEN BY ROBERT ARNSTEIN FALL 1975 ; 5628 MEADOW CREST DRIVE ; DALLAS, TEXAS 75230 (214) 368-6820 Quoting volume16.doc: This is the FOCAL that Processor Technology was distributing in 1976 on blue Xerox-proof paper. It has some known bugs: exponentiation doesn't work and it has no operator precedence. I have added a few things: I/O for CP/M (just console I/O) and a routine to list the error messages. Load FOCAL with DDT and jump to 103H; a list of the error messages will be printed. A note of interest-the floating point package in FOCAL is from the Intel users library and was originally written for the 8008 CPU. [ A.R.G. I understand that the exponentiation error only occurs (symptom x^y results in y^y) with the 100H origin. May give a clue to finding page-dependant routine] JTB: The source code has been "warmed over" by somebody for an Intellec/80 machine, not the Sol. The same person is responsible for warming over PROCCALC.ASM that appears in CPMUG017, as is quite clear from the way the source compilation is conditional on the two flags "PROCT" and "INTEL". I have not modified the source code from the way it appears in CPMUG016; it would require some work to get it running under CP/M on the Sol. PROCCALC -- This comes from CPMUG017. The source from CPMUG017 had to be modified to run on a Sol. The 'X' command was modified to return to CP/M instead of restart the program. Fixed a bug too. It is a five-function 30 digit BCD floating-point package, wrapped by an odd calculator interface. Commands: R reset the calculator K pop a number off the stack A= assign top of stack to variable A B= assign top of stack to variable B C= assign top of stack to variable C D= assign top of stack to variable D W set the terminal width to columns X QUIT (actually, restart calculator) Q square root top of stack FD output in std format, after "." FD$ as FD, but incl. trailing 0's. FE output in exp. format, after "." FE$ as FE, but incl. trailing 0's. []* = "A" | "B" | "C" | "D" | Expressions are evaluated strictly left to right. The expression results are pushed on the stack. Because I haven't studied it in detail nor used it much, there may be more to it than this or I may have misdescribed some of it. Go figure it out and tell me. TIMESQ -- This comes from CPMUG029, and is an elaboration of the program TISQ.ASM that appeard in CPMUG006, which appears to be corrupted in the archive anyway. It is a marquee scrolling program, although the interface is just a simple wrapper around the more useful drawing code. The interface is to just type upper case letters, digits, and symbols and they appear on screen, but much larger than normal. I've had to modify it to work on the Sol, and while I was at it, I've modified it to quit if the MODE key has been hit. CHASE.ASM -- CHASE.COM -- These are from volume 029 of CPMUG. It is based on an earlier version of chase (from vol 015 of CPMUG) but with CP/M I/O. I tweaked it a bit to use the SOL VDM I/O port address; I've also made it so hitting CTRL-C will drop back to CP/M. This is a classic, fun little game. You are stuck in a room which has electrified walls and electrified obsticles filling the room. Making it worse, the room has a number of zombie robots that attempt to catch you. It isn't real-time. For every step you take, they take one step. The goal is to evade them without walking into any electrified obsticles while at the same time trying to lead them to walk into the obsticles. (the robot chase algorithm is simple: take the most direct path). From the source code: THE GAME OF CHASE -- FROM DR. DOBBS JOURN MAY 1977 -- MODIFIED FOR SOL -- RE_MODIFIED FOR VDM DEFLECT.ASM -- DEFLECT.COM -- These come from CPMUG029. Quoting the source code: ; THE GAME OF DEFLECTION BY ANDREW A. RECUPERO ; FROM KILOBAUD FEB '78 #14 ; ; TO START TYPE 0,1,2,3 ; 0=1 TARGET, CLEAR FIELD ; 1=1 TARGET, SHIFT DEFLECTORS ; 2=3 TARGETS, CLEAR FIELD ; 3=3 TARGETS, SHIFT DEFLECTORS ; ; THE OBJECT OF THE GAME IS TO HIT TARGET(S) BY ; DEFLECTING THE RUNNER INTO THE TARGET. ; ; DEFLECT TARGET BY TYPING A "/" OR A "\". ; ; ALL TARGETS MUST BE HIT WITHIN A FIXED TIME. The game is to drop "deflectors" at strategic times to cause a "runner" to hit one (or three) randomly placed targets. I've modified it to quick back to CP/M if CTRL-C is typed. PIRANHA.ASM -- This came from CPMUG029 and is a CP/M port of an earlier cassette-based VDM game. I've modified it to be compatible with the Sol. It must be compiled with MAC, not ASM. CTRL-A (synonymous with left arrow) quits back to CP/M. Hit ESC once or twice and you can pick your own key mapping. MUSIC.ASM -- MUSICP.COM -- These are from CPMUG029. Quoting the source code: ; ALPHA-NUMERIC MUSIC WITH AMPLITUDE CONTROL ; ; COPYRIGHT 1975 BY MALCOLM T. WRIGHT ; ; AVAILABLE FROM: PEOPLE'S COMPUTER COMPANY ; BOX 310 ; MENLO PARK, CALIFORNIA 94025 MUSICP.COM is an executable with a table already programmed with "SOUNDS OF SILENCE". Obviously, neither of these programs is going to have their intended effect with Solace, as they rely on stray RF generated by the S-100 bus to become audible on a nearby AM radio. MUSICP has no way to quit -- just let it play the whole song and it will return back to the CP/M prompt when it is done. ROBOT.ASM -- ROBOT.COM -- From CPMUG029. Not so much a game as a demonstration. A little "robot" wanders around the screen until you hit ^C. Quoting VOLUME29.DOC: LET YOUR VDM MOONMAN BUMP AROUND THE BOUNDARIES OF THE SCREEN. TARGET.ASM -- TARGET.COM -- This is from volume 029 of CPMUG. The source code credits say: TARGET A VIDEO TARGET SHOOTING GAME USING THE SOL VIDEO TERMINAL Modified 6/2/78 for CP/M and VDM. Modified to use the SOL VDM scrollbase I/O address, and to quit back to CP/M if CTRL-C it typed. VDMSAVE.ASM -- VDMSAVE.COM -- This is from CPMUG040. It is a small utility that dumps the contents of the VDM screen to the named file. However, because the VDM uses a hardware scroll and this program doesn't take that into account, the text can appear shifted in the output file. PONG.ASM -- PONG.COM -- This comes from CPMUG041. Quoting the disk abstract: PONG.ASM is the assembler source for a game program which simulates the electronic TV game called "PONG". It can be assembled with ASM. It requires a Processor Technology VDM or SOL for the display of the ball and paddles. It was submitted to the users group earlier, but the file got clobbered somewhere along the way. The source was written by one person (poorly sturctured and without comments and with non-standard op codes) and was disassembled back into standard op codes) and extensivly modified by someone else (which didn't help the quality), making it difficult to modify. In its present state, it is useful for an enjoyable game of PONG. Adult tire of it quickly but kids love it. Reviewed by Robert A. Van Valzah. It is not exactly like the typical pong game because you can move foward and backwards too, not just up and down. I've modified it just a little to make it work on the Sol. See the source code for a few pointers on how to play. LIFE.ASM -- LIFE.COM -- LIFE.DOC -- This comes from CPMUG042 and was written by Ward Christensen. A terrific (well written, well documented, high performance) implementation of LIFE for the VDM. Read the text file LIFE8.DOC for usage notes. PTRSCNVT.ASM -- PTRSCNVT.COM -- PTRSCNVT.DOC -- This comes from CPMUG042 and appears identically in CPMUG046. It is a cp/m program to convert Processor Technology ALS8 assembly source files into standard CP/M format source files. Read PTRSCNVT.DOC for more information. NSCOPY.ASM -- NSCOPY.COM -- This is from CPMUG082. "North Star Disk Copy Program V4.2 of 09/17/81", copyright Steve Bogolub. This isn't SOL specific, but is Northstar disk controller specific. It is a disk utility program to format, verify, and copy either or both boot tracks and data tracks of floppy disks. It does its operations a few tracks at a time, so it is relatively speedy (as far as floppy disks can ever be speedy). The program contains its own disk drivers for the sake of speed. It has also been quite useful in my efforts to reverse engineer some of the BIOS routines from my real system.