Since XMODEM was originally written on CP/M, I think you could get a CP/M XMODEM program SAVEed and then run that from *inside* CP/M and not have to drop back to the monitor, etc. for each file.
Andrew B On Monday, September 1, 2014 4:42:12 PM UTC-7, Crustyomo wrote: > > Jeff, > > Excellent! I'm really happy to hear your enjoyment in building this card. > I'm curious, what front panel are you using to operate the board? > > I am using a 1GB SD card from DANE-ELEC. It can only work with FAT16 > which can only work on SD Cards up to 4G. I'm like you, more into hardware > than software, but I'm learning as I go along (mostly from all my > mistakes). I have had issues trying to get some other SD cards working, so > I kind of stuck with the 1GB and left those issues for some future > investigation. I would really like to know which card(s) work for you. > > Now, for loading files.... Hmm, there aren't many ways to do this. If the > CP/M image file would have a BIOS that works with a certain emulator, then > you could go that route. Let me explain how CP/M is booting. When you > boot up my ROM, you have 3 choices, Enter Monitor, Change name of files for > the disks A to D and Boot to CP/M. To boot CP/M, I jump to the Cold Boot > routine that is part of the CP/M BIOS. Hmm, let me back up 1 step. When > you boot my ROM, it copies itself to upper RAM, disables Shadow ROM (thus > allowing the low memory to be RAM) and it jumps to the welcome screen (3 > choices). The ROM is designed so the CP/M BIOS loads at a specific > location. > Here's what the memory looks like when you boot to the welcome screen. > > DA00: Code for Welcome Screen (3 choices) > Dxxx: Code for the Monitor (uses routines in BIOS) > EE00: CP/M BIOS > > Now, when you load CP/M, a jump to the cold boot at EE00 causes the first > XX number of sectors to be loaded from the file in "Disk-A" at DA00, so the > memory now looks like this: > > DA00: CP/M (CCP and BDOS) > EE00: CP/M BIOS (as loaded from Boot ROM, NOT from Disk-A). > > So, you can have some other CP/M bios on "DISK-A" at sector XX+1, my ROM > will not load that other BIOS, because my ROM should have all the BIOS > you'll ever need for CP/M. > > Now, back to loading files.... the only way I can think of doing it > with what's there is.... > 1. Boot system to Monitor > 2. Use either Xmodem or Hex file transfer to get a file into RAM > 3. Boot to CP/M > 4. Use CP/M's built in command SAVE to write the file to "DISK-A". > > You might need more detail on these steps. > 2. Transfer a file to Memory. > You can do this with XMODEM. from the Monitor, type: > X U 100 <Enter> > Then start an XMODEM transfer from your terminal program. > Or you can do this with HEX File transfer mode... While at the monitor > prompt, just ASCII upload the .HEX file, the first colon will initiate the > transfer, be sure your hex file has the :00000001FF end of file line at the > bottom of the file. > Your HEX file must start at address 0x0100, this is a CP/M thing (also a > DOS thing). CP/M loads all it's programs at 0x0100. Space in page 0 is > reserved for the FCB and stack.... Hmm, I wonder if it's this limited stack > space that is causing the problems with CP/M... > If you wish to write a program in CP/M, it must start at 0x100, this will > be the first instruction executed after the file loads. > > Step 3. You can either reset and boot to CP/M or from the monitor, type G > DA00 to Jump to DA00 (the CP/M cold boot). > > Step 4. Rich Cini describes this CP/M instruction very well in his paper, > I hope I don't mess it up here... > The program you loaded at 0x100 is still there. > At the a> prompt, type > SAVE 10 filename.ext > This will write 10 pages of 256 bytes from 0x100 to the file name you > specify. > Of course, if you need only 1 page, then write just 1 page. You need to > know how many pages your loaded program is. > Final note, I'm not sure if 10 is decimal or hex ie, it could mean "ten" > or "sixteen". I'm sure if you search for help on the CP/M save command, > someone will document it in full. > > I used this same method to load all the extra CP/M files in CP/M v1.4 on > my IMSAI (using real 8" drives). > > Finaly, regarding RAM test, I wrote this to Harold.... I hope it suffices > for you. > > The RAM test does 4 tests, a page march, byte march (within each page) and > a bit march (within each byte). > The 4th test is a sequential write that will leave incrementing values in > RAM. > > After each test, it will report success (if it doesn't jump to report a > failure first). > It will also display some memory locations or patterns on the Front Panel > LED display of the IMSAI (the ALTAIR does not have this so writes to I/O > 0xFF are lost to the bit bucket). > You cannot ram test the page where the Stack is located (I think). Since > the Monitor is running in upper RAM, you can test the lower ram. Enter: > R 00 7F > to test the memory from 0x0000 to 0x7FFF. > If you want to run a quick test of 1 page (say page 00), type > R 00 00 > > The Page March, writes 00's to all pages, then fills a page with FF's and > reads this back while verifying all the other pages are still 00's. It > repeats this for every page, then does the test again, this time writing > FF's to all pages and 00's to the page being tested. > > Byte march does the same but within a single page and repeats for all > pages selected. > And bit march is even a finer test of bits within each byte. Again > marching 1's then 0's. > > In this way, any data written that does not read back the same flags an > error, further, any crossed cells or address lines will be detected if the > data in the other areas of RAM change when they should not. > > It's a good ram test and I've used it to find bad memory on some > production boards I used to repair (years ago). > > > > Regards, > Josh > > ------------------------------ > Date: Mon, 1 Sep 2014 10:42:23 -0400 > From: [email protected] <javascript:> > Subject: [N8VEM-S100:5124] JAIR 8080 Board- It's alive! > To: [email protected] <javascript:> > > Hi Josh (& all that are interested), > I have finished the build of the JAIR 8080 board and I can get into the > monitor, test some RAM, ports, examine memory, etc. I have been unable to > boot CP/M however. I thinks that it must be the way I prepared the SD card > of the card that I am using. I have normally used windiskimager to create > disk images on SD cards. Windiskimager typically uses .img image files to > create a disk image on the card. I tried using the .bin file as the source > but the SD card doesn't appear bootable so I assume I did something wrong. > Also what size cards are you using? Most of my cards are SDHC of 4,8 or > 16gb capacities. I do have a few 1gb standard SD cards that I can try also. > I have to admit that I was pretty excited to see your design come to > life. It is very cool indeed. Also I realize that you are preparing for > VCF-MW so it may have to wait but does any guide exist for the monitor > commands. I was able to figure out most of them but I am not sure about > the RAM test, unassemble, dump & SD card functions. > > On 8/2/2014 11:57 AM, Crusty OMO wrote: > > Hi Guys, > > I have been able to get CP/M 2.2 booting from the SD-Memory card. Please > find the JAIR-Firmware V1.zip file on the wiki page. > > http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder¶m=S-100%20ALTAIR-IMSAI%208080%20CPU%20Board > > It will boot CP/M 2.2 and give the "a>" prompt. (I thought it would be a > capital A, but it's not.) > > > > -- > You received this message because you are subscribed to the Google Groups > "N8VEM-S100" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] <javascript:>. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "N8VEM-S100" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
