Home| Sanos| RC702| Rita| Documents| Links| Contact| Search| |
I found a box of program listings with my old COMAL programs back from 1981-1982 on the attic. COMAL (Common Algorithmic Language) was a computer programming language developed in Denmark by Benedict Løfstedt and Børge R. Christensen in 1973. COMAL is a mixture of BASIC and Pascal. It is an interpreted language like BASIC, but with structured programming constructs like IF/ELSE/ENDIF, PROCedures, FOR/ENDFOR etc, much like you know it from the much later Visual Basic. In Denmark, and in a few other places, it was used for teaching programming in schools. I learned COMAL in 8th grade. My first COMAL programs was for the RC7000, which was a Data General Nova 1200, produced under license by the Danish computer company Regnecentralen. The box contained some of the very first programs I ever wrote: A program to compute factorials: 0010 INPUT "INTAST FAKULTET: ",FAK 0020 LET FAKULTETET=1 0030 FOR TÆLLER=1 TO FAK 0040 LET FAKULTETET=TÆLLER*FAKULTETET 0050 NEXT TÆLLER 0060 PRINT "FAKULTETET TIL ";FAK;" ER ";FAKULTETET and a program to output Fibonacci numbers: 0010 INPUT "INTAST TAL: ",TAL 0020 LET TAL1=0 0030 LET TAL2=1 0040 FOR TÆLLER=1 TO TAL 0050 LET TAL3=TAL1+TAL2 0060 PRINT TAL3, 0070 LET TAL1=TAL2 0080 LET TAL2=TAL3 0090 NEXT TÆLLER I found a free COMAL interpreter, OpenComal, and got it up and running. It is a COMAL-80 interpreter, so it is not quite compatible with the RC-COMAL dialect on the RC7000. I also have a box of punched tapes, which contain many of these programs, but I don't have a punched tape reader, so I cannot read them into any modern computer at the time. |
|
I found a scanned copy of the complete technical specification for the RC702 system (local mirror). This contains complete circuit diagrams and descriptions of all components in the RC702 system. The RC702 had a Zilog Z-80A CPU and 64KB RAM, one or two 5 1/4" floppy disk drives, as well as serial and parallel I/O ports. I tried searching for an emulator for the RC702, but while there are a bunch of Z-80 and CP/M emulators, there are no emulators for the RC702. It should be possible to use an existing Z80 emulator and add support for the R702 hardware devices:
Technical documentation for the hardware:
A small note on terminology: RC700 refers to a complete stand-alone computer system consisting of a RC702 micro computer, a RC721/RC722 keyboard, a RC752 monitor, and one or two RC761/RC762 flexible disk drives. The RC700 was also often called RC Piccolo.
In order to be able to use a RC702 emulator I need to find some way of transferring the data from the 5 1/4" floppy disks to a modern computer. The disks are double-side double-density disks with 360K storage capacity. It should be possible to read these using a 5 1/4" floppy drive from a PC. The RC702 also had a 2KB ROM with an autoloader program for booting the computer. When the RC702 was reset, the lower 2K of the memory was mapped to the boot ROM, enabling the system to start the autoloader program. The ROM can be disabled using an OUT 0x18,A instruction, making the full 64K RAM available. I'll need a copy of the boot loader ROM to be able to run programs on the RC702 emulator. I don't have access to a physical RC702, so I have to find someone who either has a copy of this ROM or a working RC702 system, which I can copy the ROM from. |
RC700 system (courtesy of Dansk Data-Historisk Forening) |
Found a guy who has a RC700 system. The boot loader ROM in his system was defect, containing all 0xFFs. He has asked Dansk Data-Historisk Forening, and they have promissed to send him a new boot loader ROM. I sent an e-mail to him asking if I could get a dump of the ROM. My first PC, a COPAM AT Computer (10 MHz 80286 with 640KB RAM from 1986), had a 5 1/4" TEAC floppy disk drive. I have installed this drive in a newer computer, a Zitech PC with a 1.67 GHz AMD Athlon 2000+ processor and 512MB RAM. The first problem is that the 5 1/4" drive uses a connector that is different from a normal floppy drive cable. It needs a Card Edge 34-pin Female connector instead of the usual IDC 34 Female connector, so I had to find an old floppy cable to be able to connect the 5 1/4" TEAC floppy drive to the motherboard. After messing around a bit I managed to get the BIOS set up correctly and set the DIP switches for Drive Select. I booted up into Windows and it could see the 5 1/4" floppy drive, but it could not read the floppy disk in the drive. I got a "Drive not ready" error. |
Most floppy disk analysis tools seems to be for DOS, so I have created a FreeDOS boot disk, and I can start DOS on the Zitech PC. I have downloaded ANADISK for DOS so I can analyze the disks. |
Applied for membership of Dansk Datahistorisk Forening, which is a society for Danish computer history. They have a working RC700 system, so maybe I can get a copy of the boot ROM from them. |
The floppy cable I found had both a Card Edge connector for the 5 1/4" drive as well as a IDC-34 connector for the 3 1/2" drive. I got the 5 1/4" drive and 3 1/2" drive connected using the same cable, so now I can boot up in DOS on the 3 1/2" drive to run DOS floppy diagnostic programs on the 5 1/4" drive. The 5 1/4" drive is responding to the Floppy Seek command on boot up, and the motor responds to motor on/off requests. The drive arm also seems to respond, so the basic mechanical systems seems to be working. The motor can spin up my test floppy disk, and although the drive is a little noisy, it can spin the disk without doing any damage to the disk.
I tried using ANADISK to analyze a test floppy, but I still get a "Drive not ready" error when I try to read the disk. I tried cleaning the drive's heads using an alcohol swap. There was a bit of rust around the heads but otherwise the heads look intact. Even after cleaning, I was unable to read any disks. |
I have gotten a reply from Jesper Henriksen. He will send me a hex dump of the boot EPROMS when he get them back from Dansk Datahistorisk Forening. That is fantastic news. Without a boot loader ROM I would be stuck. I still cannot get my old floppy drive to work, so I've bought a TEAC FD-55B-01-U 5,25" Floppy Drive on eBay for $100. I have to wait for it to arrive from Poland. |
The Polish floppy drive vendor called today and told he could not find the drive in his warehouse, so I had to find a new drive on eBay. I have ordered another drive (Panasonic JU-455-5) from a vendor in Ventura, CA, USA. It was a little cheaper ($37), but they claim they have tested the drive, and it is in good working condition. The basis for a RC702 emulator is a Z80 emulator. I have downloaded the Z80-SIM emulator. It is written in ANSI C, and the code looks good. Although it is written for Unix it was quite simple to port it to Windows using the SOW library from Sanos. Z80-SIM is released under a BSD license, so there should be no licensing problems. The Z80-SIM emulator looks very complete with respect to Z80 emulation. However, it does not implement INT MODE 2, but it should be quite simple to implement. |
After studying the RC702 Technical Specification I finally figured out how interrupts are handled in the RC702. The Z80 peripherals (SIO, PIO, and CTC) use the Z80 mode 2 interrupt mechanism, where an interrupt vector is programmed in a register in the controller. This interrupt vector together with the Z80 I register is used for computing the interrupt routine address. However, it took me a while to figure out how interrupts from the CRT and FDC controllers are handled, since these do not support the Z80 interrupt protocol. Looking at Figure 2.3.14 on page 27, you can see that the interrupt output from the CRT controller is connected to the TRG2 input of the CTC, and the interrupt output from the FDC is connected to TRG3. This means that you can program the CTC to generate an interrupt when TRG2 or TRG3 is signaled, so it is actually the CTC that generates the interrupt on behalf of the CRT and FDC controllers. |
The RC702 Technical Specification Figure 2.5 and 2.6 contain diagrams of the ROA296 and ROA327 character ROMs, including the special semi-graphics character set used for low-resolution graphics on the RC702. I have made bitmaps for all the characters in the character ROMs. I hope that using the original font, together with the distinctive amber color of the RC752 monitor, will give the RC702 emulator "the right feel". |
I learned to program in Pascal using Compas Pascal for CP/M-80 from a small Danish computer company called Poly-Data. Compas Pascal was written by Anders Hejlsberg (see his own story here), and was later to become Borland Turbo Pascal. Today I found someone who has an original copy of Compas Pascal for CP/M-80. It would be really cool to get this up and running again. I remember as a young teenager I attended the Mikro-Data 83 computer fair in Bella Centeret, Copenhagen, where Anders Hejlsberg himself demonstrated the new version of Compas Pascal. This was truly a revolutionary compiler. It was blazingly fast, even on a 4 MHz Z-80 computer, so the edit/compile/run cycle was much faster than with other compilers. |
All the images of the RC logo I've been able to find are really poor quality, so I have scanned a logo from an old RC binder and cleaned it up in GIMP. I've created some high-quality Regnecentralen logos from this scan. |
|
Poul-Henning Kamp has been very kind and made a copy of the boot loader ROM from one of the RC702 machines at DDHF. This means that I can now get started with my RC702 emulator project. I have taken the Z80-SIM emulator and added support for INT mode 2 and added skeleton code for the peripherals devices. The emulator can now boot up and write "RC700" on the screen (i.e. at RAM address 0x7800). Next step is to try to see if I can make disk images from some of my boot disks using the 5 1/4" floppy drive. |
I've received a "regnecentralen rc702 cp/m 2.2" disk image from Jacob Dahl Pind. The image is in IMD format produced by the ImageDisk tool, which has support for "exotic" disk formats with different encodings, number of sectors and sector sizes per track. I have added support for reading IMD file in the emulator. Now I have the pieces needed to get the RC702 emulator to boot up into CP/M. |
I have put together a PC for reading my old floppy disks. It is an old PC where I have installed a hard disk, a 3 1/2" floppy drive, and the 5 1/4" floppy drive I bought on eBay, and I have put DOS 5.0 and ImageDisk on the hard disk. I can then use ImageDisk for reading the disks and then copy the IMD files to 3 1/2" floppy disks, which I can read on my laptop using a USB floppy drive.
I have managed to read all my floppy disks using this setup. There is only one floppy I haven't been able to read without bad sectors. I'm amazed that these 30-year-old disks are still readable. I found that some of the floppies, that could not be read on the first try, often had fewer or no bad or missing sector on subsequent tries. It seems like just keeping the floppy spinning cleans the disk so it becomes easier to read. Almost all the disks had read errors, but by setting the number of read retries sufficiently high (100) it was possible to recover almost all the data. I have made the disk images available here. |
|
I haven't been able to boot any of the floppy disk images in my RC702 emulator, so I have long suspected that there were some issues with them. Certain patterns in the data look suspicious to me. There seems to be some repeated garbage in the sectors. This could be an
indication that I've captured some garbage from the gaps between the sectors or there is some timing issue with the DMA transfer between the floppy drive and RAM in the PC I have used for reading the data from the floppy disks.
I have configured a "new" old PC for reading my floppy disks. I moved the hard disk with DOS 5.0 and ImageDisk and the floppy drive I bought on eBay to the new PC and tried reading all my old floppy disks again. After doing some rudimentary inspection of the data it seems to look much better. The systematic garbage patterns in the data seem to be gone and the sectors of the text files on the floppies seem to be readable now. I have uploaded the new floppy images and you can download them here. |
Today, my RC700 emulator booted up to the A> prompt in CP/M for the first time:
RC700 56k CP/M vers.2.2 rel.2.1 A>_ This is a major milestone in my RC700 emulator project. Now all the basic emulation is up and running, emulating the Z80 CPU, PIO, SIO, CRT, DMA, FDC, etc. It also shows that the new disk images are working as well as the boot loader ROM. I now need to tidy up the code and write a frontend for the emulator. I also need to implement support for writing to the virtual floppy disks. |
The RC700 emulator can now run basic CP/M commands. I have made a virtual RC terminal for curses on Linux. I still need to implement keyboard and character set mapping to support the RC character set. While most of the character set is standard ASCII, there is special support for the Danish letters (Æ, Ø, and Å). These are mapped to the positions normally used by square brackets and backslash, which have then been mapped to character codes below 0x20. |
|
Although the RC700 emulator is still work in progress, I have made it available for testing. You can take a look at the RC700 Emulator page for instructions for downloading and running it. |
I have had problems getting the RC700 emulator display to work for RC700 COMAL. The screen drawing routine in the emulator pulls the screen buffer from DMA channel 2. This works fine for CP/M, but the display did not work properly when booting RC700 COMAL disks. After looking more closely at page 77 of the RC702 Technical Specification, I discovered that DMA channels 2 and 3 are cascaded in the video display controller. If DMA channel 2 terminates before reading a full screen buffer, it starts DMA transfer on channel 3. I have implemented this in the CRT emulator, and the display function in the emulator now also works for RC700 COMAL. Now I can run my 30-year old COMAL programs. |
I have implemented a new SDL-based display for the RC700 emulator. This uses the ROA296 and ROA327 character ROMs for generating the characters on the screen. The emulator now uses the original RC font, which gives it a much more authentic feel. It also supports the semigraphics character set, including support for the SEM702 programmable character RAM. |
|
I have added support for writing to floppy disks in the RC700 emulator. I have used this for producing a set of disk images with RC702 software packages from my old floppy disks. |
It is useful to be able to transfer files between the RC700 virtual machine and the host machine, so
I have implemented a simple file transfer port in the emulator to support this. This mechanism can
potentially be used from all the different RC700 environments by using two special I/O ports for
transferring files:
To send a file from the RC700 virtual machine to the host machine the following protocol is used:
To retrieve a file from the host machine a similar protocol is used:
I have implemented two utility programs for transferring files under CP/M using the file transfer port: FPUT.PAS and FGET.PAS. These are written in PASCAL and can be compiled with COMPAS PASCAL and you can download the SIMUTILS disk image with these from the RC702 software catalog. |
The RC700 emulator now runs under Windows as well as Linux. You can download both versions here. |
On the RC700 CP/M system disk there is a HDINST utility. If I try to run this program in the
RC700 emulator, it outputs:
RC700 56k CP/M vers.2.2 rel.2.1 A>HDINST RC700 - HARD DISK INSTALLATION - VERS.1.1 82.10.14 Error: Select disk C A> This seems to indicate that the RC700 had support for using a hard disk. Standard RC700 systems were equipped with one or two floppy drives, but usually not a hard disk. However, I remember having seen a RC700 with a hard disk back in the early 80ies. Maybe this was at the Mikro-Data 83 computer fair in Bella Centeret, Copenhagen, but I am not sure. I have searched for any documentation on using a hard disk with RC700, but I have not been able to find anything. The standard RC700 did not have any hard disk controller, so I wondered how this could work. One clue is that during startup of RC CP/M, the boot loader reads from some undocumented ports, in particular port 0x61-0x67. To investigate this further, I disassembled the RC700 CP/M BIOS, and there are many places where these ports are used, and I could figure out that this had to do with the disk I/O routines. I also found out that DMA channel 0 seems to be used for hard disk transfers. In the RC702 Technical Specification, this DMA channel is described as being used by the external debugger, but maybe they designed a hard disk controller for the RC702 that used this spare DMA channel. The RC750 Partner had hard disk support, so maybe they had retrofitted this to be used with the RC702. This used a modified Western Digital WD1002-SHD Winchester Controller with the RC internal product number WDC703 and a 10MB MiniScribe 3012 Winchester disk with the RC product number WDD703. The WD1002-SHD controller uses a SASI host interface, which is an early simplified version of SCSI. I found a data sheet for the WD1002-SHD controller, but the interface did not seem to match with the code in the RC CP/M BIOS. Port 0x67 seems to be the command and status register, but the command and status codes in the BIOS do not seem to match the SASI codes. The hard disk interface for the RC750 Partner also seems to have been designed in 1985, which is too late. I am looking for something that was available around 1983. From the disassembly of the RC700 CP/M BIOS, I can see that ports 0x61-0x66 are being used as parameter registers, and port 0x67 is the command and status register. This is very similar to the IDE host interface for PC hard disks (today known as ATA). The parameter registers and commands seem to match and the IDE interface would have been available in 1983. However, there are some differences, most notable the lack of the IDE IDENTITY command that lets the host get the disk configuration through the IDE interface. Around the same time, IBM was starting to sell hard disks for their IBM XT and AT Personal Computers. In 1983 Western Digital won the contract to provide IBM with controllers for the PC/AT, and the WD1003 controller was used for interfacing to Seagate ST-506 (5MB) and ST-412 (10MB) hard disks. The WD1003 was designed for the PC/AT, so it was a 16-bit controller. It would have been a little difficult to interface to the 8-bit data bus in the RC702. However, Western Digital produced an earlier controller, WD-1002-05, which had an 8-bit interface, and matches the commands and parameters used in the RC700 CP/M BIOS. Based on all this speculation and investigation, I believe that the RC702 could use a 10MB ST-412 hard drive with a Western Digital WD-1002-05 controller. I have no direct documentation for this, but the BIOS in RC700 56k CP/M vers.2.2 rel.2.1 seems to have support for this, and these items would have been available at the time. In order to add support for a virtual hard disk in the RC700 emulator, I need to find a way to make the BIOS believe that there is a hard disk attached to the system. The "Error: Select disk C" message indicates the the BIOS thinks that there are only two disk drives in the machine. Maybe I need to patch the BIOS to get this to work, but I don't have any documentation on how to do this, and it is not obvious from the BIOS disassembly how to do this, so this is where am stuck right now. The flexible disc drives for RC702 had product numbers RC761 and RC762. At address 0x04E2 in the RC700 CP/M boot sector there is a string containing "RC763". Maybe RC763 was the product number for the mysterious undocumented RC700 hard disk. |
I have found a way to run the HDINST utility. If you patch the value 0x04 into memory location 0xF334, the RC CP/M BIOS thinks that there are four drives in the system. I have made a skeleton WD1002 device emulator, and I can now run the HDINST utility: RC700 56k CP/M vers.2.2 rel.2.1 A>DDT DDT VERS 2.2 -SF334 F334 01 04 F335 02 . -^C A>HDINST RC700 - HARD DISK INSTALLATION - VERS.1.1 82.10.14 New configuration on hard disk? (Y/N)Y WARNING! A new configuration will cause old data on the hard disk to be erased - OK? (Y/N)Y I Type of configuration I Disk sizes I I-------------------------I-----------------------------------I I 1: DISK C,D I 0,3MB 7,9MB I I 2: C,D,E I 0,3MB 3,9MB 3,9MB I I 3: C,D,E,F I 0,3MB 1,9MB 1,9MB 3,9MB I I 4: C,D,E,F,G I 0,3MB 1,9MB 1,9MB 1,9MB 1,9MB I I-------------------------I-----------------------------------I Select type (1/2/3/4): 1 Drive A : 0,3 MB mini diskette Drive B : 0,3 MB mini diskette Drive C : 0,3 MB hard disk unit Drive D : 7,9 MB hard disk unit New configuration OK? (Y/N) Y Writing CP/M format (E5's), track: 192 Function completed Copy CP/M system to hard disk? (Y/N)Y Select source drive (A/B) A Insert CP/M system diskette in A and press <return> CP/M system copied Press <reset> to initiate new system configuration <return> to warm boot A> |
While playing around with the RC700 COMAL system, I stumbled upon an undocumented backdoor: the command ej050253 will take you into a simple monitor that allows you to inspect and debug the system. I believe this command is a reference to one of the main authors of RC700 COMAL, Erik Jeppesen, who has used his initials and birthday to add a backdoor command to the system. You can use the following commands: Q (quit), R (run), S (show registers), J (jump to address), L (list memory), M (modify memory), and # (reboot). You can also type a hex address to change the memory location for the next command. |
I have gotten some more information about the RC700 hard disk from Finn Verner Nielsen at DDHF and Erling Schmidt, my computer class teacher from back when I was in primary school. The product number for the hard disk for RC700 was RC763B, which can be seen in the image to the right. This shows a RC763 hard disk at DDHF. Apparently, only very few RC763s were ever produced, probably because it was introduced around the same time as the RC750 Partner, which had a hard disk. |
|
I have made a Web-based version of the RC700 emulator. You can now run the RC700 directly in your browser without having to install anything on your own computer. The frontend is implemented using HTML and Javascript, and communicates with the RC700 emulator backend that runs on the web server. The frontend and backend communicates using WebSockets. You can try the emulator here. |
I have just returned from my visit to DDHF
where I talked with Peter Heinrich. He is working on getting the RC700 machines
at DDHF up and running. I also saw their RC763 hard disk, and it turned out that I
was right about the Rodime disk. I also finally figured out how the interrupts from
the WD1000 is handled. The interface board for the RC763 has an extra Z-80 CTC
that is used for HD interrupt handling in the same way as the FDC and DMA controllers.
This explains the writes to port 0x44-0x47.
Peter Heinrich had a box full of floppy disks for RC700, which I have made copies of and I am in the process of getting these organized and put up on the web site. One of the disks contained a source code listing of the autoloader for the RC700. The ROB358 boot ROM is a never version than the ROA375 I have used so far. I have made a build disk for the ROB358 autoloader, so I can build it from source. ROB358 supports booting from the hard disk, so the emulator can now boot directly from the hard disk. |
I have found a hardcopy of the manuals for the COMPAS Pascal system that I used back in the early 80ies. COMPAS Pascal ran under CP/M and was made by Anders Hejlsberg's Danish company, Poly-Data microcenter ApS, and would later evolve into Borland Turbo Pascal. I have disk images for running COMPAS on my RC700 emulator, but so far I have not been able to find the manuals for COMPAS Pascal anywhere. I have scanned the manuals and put them under the manuals section: |
|
I have made a Mac OS X version of the RC700 emulator. Since I don't own a Mac myself, I have only been able to test it on a VMware virtual machine running Mac OS X 10.8. It required very few changes to the code to get it to compile and run, thanks to the cross-platform nature of SDL. Most of the changes was to fix compiler warning generated by the C++ compiler in Xcode. |
In celebration of the 40th anniversary of COMAL, I have, in cooperation with Erling Schmidt, reconstructed the COMAL programs for the KV81 system, which was used for the local elections in Aalborg in 1981. See here for the story (in Danish). We now have a running system including all the data from the 1981 local election in Aalborg. |
|
I have received a lot of articles in Danish about RC700 from Erling Schmidt. He was the editor of RC-INFO, which was a regular newsletter from Regnecentralen in Datalærebladet. This contained the latest news about RC products with special focus on schools and education. This is an excellent source of historical information about the RC700. |
The RC700 emulator now runs on Windows, Mac, Linux, and Web, but I thought it would be fun to also make a version that could run on "bare metal". I have made a floppy disk that you can put into a PC and turn it on. The PC then boots up and runs just like a RC702 Piccolo. This way, you can run RC700 programs on a PC, just like you would run them on a RC700. The floppy contains an embedded version of the emulator as well as a RC floppy disk in IMD format. This probably doesn't have any practical value, but it is fun! The emulator uses my own small kernel, so both the kernel, the emulator, and the floppy disk IMD file can all fit onto one 3.5" floppy disk. This requires a PC with a 3.5" drive (rare these days) and 1024x768x16 VGA support (pretty common). I have made a small video of a PC booting up into the emulator. This boots up into RC700 COMAL with the KV81 system. Reading from floppies is slow, so it takes almost a minute to boot up, but if you're patient, you will see the PC suddenly turn into a RC700 computer. The emulator runs at roughly realtime speed, emulating a 4 MHz Z80 CPU. |
|
Last time I visited DDHF, I found a printout with a complete listing of the source code for the RC700 CP/M BIOS. It turned out to be a patched version of the BIOS, but most of the original source code was intact. I have scanned the listing and OCRed it. It required quite a bit of manual correction to reconstruct the code. My OCR program does not preserve the formatting of the source code text, so I had to manually correct this to match the printout. After removing the patches, I have compared the assembled version with the binary BIOS distributed with RC700 CP/M version 2.2 release 2.1. I now have a version of the source code that matches the official version, byte for byte. I had to do a little reverse engineering from a disassembly of the official 2.1 BIOS, but I think that 97% of the BIOS source code is original. |
; RC COMPUTER 23.04.83 25.06.82 15.09.82 ; 23.10.82 05.01.83 ; ; SUBJECT: RC700 CP/M BASIS SOFTWARE ; ; AUTHOR: KARSTEN DINDORP & HUGO K. ; ; HARD DISK CORRECTIONS: SC & VN JUNE 82 ; ; This program consists of: ; ; 1. Hardware initiatization routines ; ; 2. CP/M BIOS ; ; and constitutes the basis software for the CP/M operating system ; on the RC700 micro computer. ; ; The program resides on cylinder 0 of a RC700 CP/M system discette, ; and is loaded into RAM from address 0000 and forward, when the ROM ; bootstrap loader is activated by a hardware reset. |
I now have all the source code needed for building a new version of CP/M for RC700 from scratch. This is the first release of RC700 CP/M in more than 30 years, and this version is open source. |
I found a copy of the source code for the MATH48 package by Anders Hjelsberg. This is a library for 48-bit floating point math in Z80 assembler. It has functions for math operations like add, subtract, multiply, divide, and remainder. It also has functions for many mathematical fuctions like exponentiation, logarithms, square root, and trigonometric functions, as well as conversion to and from integers. There are also functions for formatting floating numbers as strings. All this only takes up 2.5 KB code! This is a true programming pearl from the 80s. The author, Anders Hejlsberg, is probably better know as the author of COMPAS pascal (later Turbo Pascal), and he is the lead architect of C# at Microsoft. I have ported the code to run on the RC700 and you can now run the demo program for computing sine and cosine tables on the RC700 emulator. There is a manual in Danish, and a translation of it to English. |
Besides my 5 1/4" floppy disks for the RC702, I also have a few 8" floppy disks which were used with a RC701 computer on my school. I can read the 5 1/4" disks with a 5 1/4" disk drive attached to a PC, but I did not have any way of reading the 8" floppies. However, it turns out that Maurice Hamm from the Netherlands has a RC702 with two 8" floppy drives. His boot disk had stopped working after 30 year, so I sent my 8" floppies by mail to him, and he was able to boot the machine again using the RC700 CP/M Loader and CP/M System disk. He has also managed to hook up the 8" drive to a PC so he can read 8" floppy disks and turn them into IMD files which can be used in the RC700 emulator. I now have disk images for booting RC700 CP/M 2.2 from 8" floppy disks in the emulator: ./rc700 -maxi CPMLOAD.IMD CPMSYS.IMD After the boot loader has started, press F9 to swap the floppy disks, and press Enter. Then it will boot into "60k cp/m vers 2.2". The CPMSYS.IMD disk image also contained a very early prototype of RC700 COMAL. There is no version number in COMAL.COM, but the disk label says "rev. 1.04", which makes it the earliest version of RC700 COMAL in my archive. |
|