I wrote a program that uses a little over 48Kb and I find that it runs on the clone or on SimH, both having 58K or 59K available TPA.
But when I transfer the program to floppy and try to run it on my 8800c, it always complains with the (now dreaded) "Bad Load" message.
I first back-ported the program from ANSI C to BDS C and it built a 52Kb binary. Trimmed off some fat and it built a 50Kb program. Those ran on the clone but not on the 8800c.
So I gave Aztec C a try. That took another re-write, sort of a "sideways port" from BDS C to Aztec C, which is a more "traditional" K&R C.
The Aztec port made a smaller binary, around 48Kb. But it appears that's still a smidge too big for my 8800c, even when I use MOVCPM and SYSGEN to create a 63Kb CP/M disk. I still get the "Bad Load" message when I try to execute it.
My "light bulb" moment was I might look at the CP/M configuration to see how much memory was available. I've listed "survey" program results for various systems below. What I see is the TPA on the 63Kb CP/M is a pretty respectable 48Kb, so it's really close. The 48Kb CP/M has around 32Kb TPA available. What's weird is the 60K CP/M I made shows 23Kb TPA. Don't know what I did to SYSGEN that thing, but it tells me I don't know what the heck I'm doing. Looks like a bunch of RAM is chewed up by BIOS or is unassigned.
So I'm hoping MIke or one of you other guys can help me with configuration advice. Are there any tips and tricks for generating CP/M that will maximize TPA?
- Code: Select all
==================================================================
63K CP/M 2.2b v1.2
For Altair 1.5Mb Floppy
A>survey
*** System Survey (June 82) ***
Drive A: 660K bytes in 55 files with 820K bytes remaining
Memory map:
0 8 16 24 32 40 48 56 64
| | | | | | | | |
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCCCCBBBBBBBBBBBBR
T=TPA C=CPM B=BIOS or unassigned R=ROM or bad
BIOS at CC03 iobyte 55 drive 00 BDOS at BE06
65279 Bytes RAM 256 Bytes ROM 48646 Bytes in TPA
0 Bytes Empty 65535 Total Active Bytes
Active I/O ports:
08 09 0A 0B
10 11 12 13
8 Ports active
==================================================================
60K CP/M 2.2b v1.2
For Altair 1.5Mb Floppy
A>survey
*** System Survey (June 82) ***
Drive A: 568K bytes in 49 files with 912K bytes remaining
Memory map:
0 8 16 24 32 40 48 56 64
| | | | | | | | |
TTTTTTTTTTTTTTTTTTTTTTTCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBR
T=TPA C=CPM B=BIOS or unassigned R=ROM or bad
BIOS at 6A03 iobyte 55 drive 00 BDOS at 5C06
65279 Bytes RAM 256 Bytes ROM 23558 Bytes in TPA
0 Bytes Empty 65535 Total Active Bytes
Active I/O ports:
08 09 0A 0B
10 11 12 13
8 Ports active
==================================================================
48K CP/M 2.2b v1.2
For Altair 1.5Mb Floppy
A>survey
*** System Survey (June 82) ***
Drive A: 592K bytes in 51 files with 888K bytes remaining
Memory map:
0 8 16 24 32 40 48 56 64
| | | | | | | | |
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBR
T=TPA C=CPM B=BIOS or unassigned R=ROM or bad
BIOS at 9003 iobyte 55 drive 00 BDOS at 8206
65279 Bytes RAM 256 Bytes ROM 33286 Bytes in TPA
0 Bytes Empty 65535 Total Active Bytes
Active I/O ports:
08 09 0A 0B
10 11 12 13
8 Ports active
============================= CLONE ==============================
63K CP/M
Version 2.2mits (07/28/80)
Copyright 1980 by Burcon Inc.
A>survey
*** System Survey (June 82) ***
Drive A: 292K bytes in 42 files with 8K bytes remaining
Memory map:
0 8 16 24 32 40 48 56 64
| | | | | | | | |
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCCCBBR
T=TPA C=CPM B=BIOS or unassigned R=ROM or bad
BIOS at F503 iobyte F3 drive 00 BDOS at E706
64767 Bytes RAM 768 Bytes ROM 59142 Bytes in TPA
0 Bytes Empty 65535 Total Active Bytes
Active I/O ports:
02 06 07 08 09 0A
10 11 12 13
10 Ports active
============================== SimH ==============================
64K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.27, 2 HD, 02-May-2009)
A>survey
*** System Survey (June 82) ***
Drive A: 850K bytes in 111 files with 142K bytes remaining
Memory map:
0 8 16 24 32 40 48 56 64
| | | | | | | | |
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCCCBBBR
T=TPA C=CPM B=BIOS or unassigned R=ROM or bad
BIOS at F203 iobyte E5 drive 00 BDOS at E406
65279 Bytes RAM 256 Bytes ROM 58374 Bytes in TPA
0 Bytes Empty 65535 Total Active Bytes
Active I/O ports:
02 03 08 0A
10 11 12 13 14 15 16 17 18 19
28 29 2A 2B
32 33
A0 A1 A2 A3 A4 A5 A6 A7
FD FE FF
31 Ports active
==================================================================