• Please review our updated Terms and Rules here
  • From now on we will require that a prefix is set for any items in the sales area. We have created regions and locations for this. We also require that you select a delivery option before posting your listing. This will hopefully help us streamline the things that get listed for sales here and help local people better advertise their items, especially for local only sales. New sales rules are also coming, so stay tuned.

Wanted: Altair formatted disk images

smp

Veteran Member
Joined
Oct 4, 2011
Messages
1,718
Location
Bedford, NH, USA
I am a proud owner of an Altair 8800c that I constructed myself a couple of years ago. I have a single 8 inch disk drive that I can use with it, or I also use the FDC+ Firmware, Version 1.3 virtual drive program available from DeRamp.com (scroll down to the Software at the bottom of the page):
https://deramp.com/fdc_plus.html

I have been happily using both the Altair DOS disk images and CP/M disk images made available in the trove available at DeRamp.com, but I see there are many more CP/M disk images out there on the Internet.

I found a great resource for Programming Languages on disk images here:
https://schorn.ch/altair_6.php

However, the disk images available do not seem to be the proper size for Altair 8 inch disk images. The disk images that I have been using are 330KB in size, and the disk images that can be downloaded from that site are 1.1MB in size.

I am looking for assistance from anyone who may be interested in downloading disk images from that site, and creating proper 330KB Altair CP/M disk images that I can use on my machine. I am willing to purchase disk images for a reasonable price for your effort to create them, or perhaps trade for them. I currently have two boxes of blank unused Athana Altair 8 inch hard-sector floppy disks, if someone might be interested in trading a floppy for a disk image.

Thanks in advance, for any advice or assistance that you may be able to provide!

smp
 
Last edited:
I don't have a working 8" drive so can't help with that.
As I read your post you can already copy from image to real disk.
You could use something like cpmtools to copy files from/to image files.
I use it to copy from images to a CF card for my system.

joe
 
Those .DSK images are a special format as described at this URL: https://github.com/companje/Altair8800

DISK IMAGES

Beside ROM files you can also find DSK files. DSK files contain a disk image which can be read by a piece of code called the Disk
Bootloader (88dskrom.bin). The Altair Disk Bootloader is a ROM chip with 255 bytes of code loaded at address 0xFF00. The Disk
Bootloader executes IN and OUT instructions and this way communicates with the disk drive(s). The disks are simulated as files
on the SD-card and can be mounted/selected from Arduino code.

Code:
loadFile("88DSKROM.BIN", 0xff00);
disk_drive.disk1.fp = SD.open("cpm63k.dsk", FILE_WRITE);
disk_drive.disk2.fp = SD.open("zork.dsk", FILE_WRITE);
examine(0xff00);
run();


Bootrom is at:
https://deramp.com/downloads/mfe_ar...Emulator for Windows v3.20/files/dsk_bootrom/

Larry
 
@jlang & @ldkramer, thank you very much for trying to assist me.

I have tried CPMTools, but I admit I have no idea what I'm doing. I tried the cpmls command pointing to a disk image downloaded from the site I mentioned, but I get the error message that cpm tools cannot open the file, or something similar. Having no experience with CPMTools, I stop there.

I am pretty capable using my Altair 8800c, so I have read hex files and bin files using the various loaders supplied by DeRamp. I do not really understand what else you are trying to say there. Since the files I download from that site I mentioned in the OP cannot be read by CPMTools, and they cannot be mounted in the virtual drive program provided by DeRamp, I have not been able to do much of anything with them.

FWIW, the two disk images that I've been most interested in are Forth.dsk and Fortran.dsk.

If anyone can give me some baby-step by baby-step instructions on how to manipulate those disk images using any available tools, I would greatly appreciate it!

smp
 
I agree. I gave you bad advise. I downloaded fortran.dsk. cpmtools can't read it and I don't have enough information to create a diskdefs entry so it can.

I looked at fortran.dsk with a binary editor. It has some odd things that make think it's not a
"normal" disk image. Things like the sectors don't start on 128 byte boundaries. But there is no header that would explain the offset.

So here is plan "B"... Download Altairz80 from schorn.ch and use that to export the files to your host filesystem. I assume you already have tools to get the binary files into your real Altair.

joe
 
Here is the Image layout from ACOPY.ASM
Code:
;==============================================================
;                       DISK FORMATS
;---------------------------
; Altair 8" Diskette Format
;---------------------------
;  Raw Bytes/sector: 137
;     Sectors/Track: 32, numbered 0-31
;   Tracks/Diskette: 77, numbered 0-76
;
; Tracks 0-5 are formatted as "System Tracks" (regardless of
; how they are actually used). Sectors on these tracks are
; formmatted as follows:
;
;     Byte    Value
;      0      Track number and 80h
;     1-2     Number of bytes in boot file
;    3-130    Data
;     131     0FFh (Stop Byte)
;     132     Checksum of 3-130
;    133-136  Not used
;
; Tracks 6-76 (except track 70) are "Data Tracks." Sectors
; on these tracks are formatted as follows:
;
;  Byte    Value
;     0      Track number and 80h
;     1      Skewed sector = (Sector number * 17) MOD 32
;     2      File number in directory
;     3      Data byte count
;     4      Checksum of 2-3 & 5-134
;    5-6     Pointer to next data group
;   7-134    Data
;    135     0FFh (Stop Byte)
;    136     Not used
;
; Track 70 is the Altair Basic/DOS directory track. It is
; formatted the same as the Data Tracks, except that each Data
; field is divided into 8 16-byte directory entries. The last 5
; of these 16 bytes are written as 0 by most versions of Altair
; Basic and DOS, but are used as a password by Multiuser Basic,
; where five 0's means "no password". Unfortunately, single-
; user Basic does not always clear these bytes. If these bytes
; are not all 0 For a given directory entry, then multiuser
; Basic will not be able to access the file. /P fixes this. The
; first directory entry that has FFh as its first byte is the
; end-of-directory marker. (This FFh is called "the directory
; stopper byte.")
;
;------------------------
; Altair Minidisk Format
;------------------------
;  Raw Bytes/sector: 137
;     Sectors/Track: 16, numbered 0-15
;   Tracks/Diskette: 35, numbered 0-34
;
; On a bootable Altair Basic minidisk, tracks 0-11 are System
; Tracks. On a CP/M minidisk, tracks 0-5 are System tracks.
; Sectors on these tracks are formatted the same as system
; tracks on an 8" diskette.
;
; The remaining tracks of a bootable minidisk, and on all
; tracks of a non-bootable data minidisk are formatted the
; same as sectors on Data Tracks on an 8" diskette, except
; that the sectors are not skewed.
;
; Track 34 is the Altair Minidisk Basic directory Track.
; Sectors on this track are formatted the same as the Directory
; Track on an 8" diskette.
;==============================================================

This .DSK format is not compatible with the CP/M Images used by cpmtools. But, the deramp.com
website has utilities to get the .DSK images to your Altair 8800.
https://deramp.com/downloads/altair/software/utilities/floppy_disk/
https://deramp.com/downloads/altair/software/utilities/PCGET and PCPUT/

DISK IMAGE TRANSFER
https://deramp.com/downloads/altair/software/1.5mb_floppy/
https://deramp.com/downloads/altair/software/8_inch_floppy/

That is one way to transfer direct to the Altair 8800.

A second way to get the files to the Original Altair 8800 is to use an Arduino with a SDcard module
attached to read and store the files from the .DSK images. That URL is https://github.com/companje/Altair8800

I've executed the Arduino code on my Laptop, but need a real Arduino to attach the SDCard Module to be
able to load the .DSK images by the "88DSKROM.BIN" ROM. To me this seems like the easiest way to
get the .DSK images transferred.

Code:
loadFile("88DSKROM.BIN", 0xff00);
disk_drive.disk1.fp = SD.open("cpm63k.dsk", FILE_WRITE);
disk_drive.disk2.fp = SD.open("zork.dsk", FILE_WRITE);
examine(0xff00);
run();

But, I can't load the fortran.dsk image because it isn't formatted as per the above specification.

ZORK.DSK
Code:
00000000   80 00 01 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000010   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000020   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000030   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000040   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000050   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000060   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000070   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000080   E5 E5 E5 FF  80 00 00 00  00 80 00 01  E5 E5 E5 E5  ................
00000090   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
000000A0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
000000B0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
000000C0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
000000D0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
000000E0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
000000F0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000100   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  FF 80 00 00  ................
00000110   00 00 80 00  01 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000120   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................

FORTRAN.DSK
Code:
00000000   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000010   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000020   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000030   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000040   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000050   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000060   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000070   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000080   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000090   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
000000A0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
000000B0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
000000C0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
000000D0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
000000E0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
000000F0   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000100   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000110   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................
00000120   E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  ................

So, the best way is as Joe stated above. Install the Altair Simulator and execute it. Then type HALT,
which will get you to the sim> prompt. From there you just type in the commands that are attached to the
type image you downloaded. For Fortran it will be:
Code:
d tracks[0-7] 254
attach dsk cpm2.dsk
attach dsk1 fortran.dsk
set cpu 64k
set cpu itrap
set cpu z80
set cpu altairrom
set cpu nonbanked
reset cpu
boot dsk

and a DIR B: will show the files. From there it will be a serial Transfer to the real Altair 8080.

DIR B:
Code:
B: TEST     FOR : F80LIB   REL : F80      COM : CC       SUB
B: F80C     COM : C        SUB : F80LIB   FOR : FORLIB   REL
B: OBSLIB   REL


Larry
 
Last edited:
Thanks again folks for all your advice and assistance.

Things continue to go poorly for me with this project. I use a Macintosh MacBook Pro, and I also use Parallels for my Windows needs. I have Windows virtual setups for Windows XP and also Windows 7. My Windows 7 OS is 32 bit, and the simulator is a 64 bit application, so It will not run in my Windows machines.

Thanks very much, again. Looks like this is going to be a long slog for me. That's why I posted the Wanted ad to begin with.

smp

UPDATE:

I also tried the simulator for MacOS. Of course, because I keep my Mac up-to-date with the latest and greatest OS, I cannot run that simulator because it is from and unknown developer.

smp
 
@jlang & @ldkramer, thank you very much for trying to assist me and for all the advice and directions.

I remain unable to run the simulator to generate the disk images I am looking for. If either of you folks find yourself with some spare time in the future, would you please consider making some 330KB Altair formatted CP/M disk images? Thanks very much, in advance. As well, if there is anyone else out there who may be able to assist me with this, I would be very grateful.

smp
 
@jlang & @ldkraemer, thank you very much for trying to assist me and for all the advice and directions.

I now have an original copy of Windows 7 Pro (64 bit) on the way to me. In the meantime, I wondered if I could create a 64 bit Linux virtual machine in Parallels. I successfully created a virtual machine with 64 bit Mint Linux.

ldkraemer, I was able to run the simulator by using the command list you provided - thanks very much for that. Yes, I can now see the files on the fortran.dsk image loaded on disk B:.

So now I am in a simulator, inside a Linux virtual machine, running on Parallels, on my MacBook Pro.

Do you folks have any suggestions for how to perform the file transfer out of the simulator? I am used to using my Altair with a terminal program running on my Mac. That terminal program has the capability to send files to the Altair or receive files from the Altair. Here, I am using a terminal window in Linux. The terminal window does not have the file send/receive capability, as it's just a dumb Linux terminal window. So what do I need to do here? How do I initiate a file output from the simulator?

Oh, my head is aching from all the hair-tearing I'm doing! Any additional advice would be *very* welcome!

smp
 
How do I initiate a file output from the simulator?

There are standalone Zmodem programs for unix (rz/sz), though I doubt very much that any Altair terminal supports that protocol. I believe the same exists for Xmodem, which is more likely for an Altair terminal program.
 
There are standalone Zmodem programs for unix (rz/sz), though I doubt very much that any Altair terminal supports that protocol. I believe the same exists for Xmodem, which is more likely for an Altair terminal program.

Yes, indeed.

There are the utilities provided by DeRamp that we have been discussing: PCGET, PCPUT, PC2FLOP, and FLOP2PC. I would love to use PCPUT to move the files out of the simulator, BUT the code expects to run in a physical Altair with an Altair 2SIO serial interface. As I am completely clueless about this simulator, I have no idea if it has a simulated Altair 2SIO, and if it does, how should I try to connect it to my external Altair or other computer to receive the files?

In the real world, I have a terminal emulator running on my laptop, connected to my Altair, and that terminal emulator has the capability to send & receive files. In the simulator, all I have is the dumb terminal window that the simulator runs in, and no capability to send or receive files with the simulator.

I am asking for any ideas about how to get the files out of the simulator onto the Linux (or Windows) Desktop. If anyone has accomplished this, or has any ideas, I would love to hear about it!

Thanks in advance.

smp
 
Back
Top