Was it possible to load integer basic and use it without a language card or were the addresses fixed to rom?
EDIT: Sorry, I meant Apple II+ (I had an europlus) so I wrongly put IIe.
Was it possible to load integer basic and use it without a language card
No, at least not as an official Apple product.
DOS 3.3 only supplied an Integer BASIC image to be loaded into Language Card. Then again, A.P.P.L.E. did sell a modified, relocatable version of Integer BASIC, called Integer BASIC+, offering many extensions as well. It was published in May 1980 on disk at 17.50 USD.
Original Apple II had Integer Basic in ROM.
In January 1978 the first Version of Applesoft (*1,2) was made available to be loaded (from cassette) into regular RAM.
In 1978 Applesoft ][ (*3) was created and made available in 5 versions (*4):
With the Apple II+ introduction all machines had Applesoft in ROM.
Now the Firmware Card could be used to hold the Integer BASIC ROMs, supporting manual switching - by a literal switch:)
DOS 3.1 (1978) supported switching between Applesoft and Integer BASIC in either mainboard ROM or Firmware Card using
Applesoft would be loaded automatic from disk into RAM, if not in ROM - by trying to load a BASIC file called 'APPLESOFT' (*5,6,7,8).
Integer BASIC could only be used from ROM - if not present (*9) a "LANGUAGE NOT PRESENT" error message was displayed.
When loading (
LOAD file) or starting (
RUN file) a BASIC program from disk the appropriate BASIC selected first (*10).
Apple didn't supply Integer BASIC to be loaded into Language Card with DOS 3.1 or 3.2, but if an otherwise obtained ROM image was loaded (by user interaction or program) into a Language Card, DOS would switch as if it was a Firmware Card with Integer BASIC ROMs.
For DOS 3.3 the mechanics to select either BASIC were kept the same, but
(Base) RAM Applesoft was removed from the diskette.
It was no longer (by default) supported to run Applesoft on an Apple II with Integer BASIC in ROM without a Language Card
Two ROM images named
INTBASIC (*11) were supplied.
INT commands now did not only switch between (ROM) images, but if either BASIC image was not in ROM, it was loaded into Language Card as part of switching (*10,12).
The default Applesoft turnkey program
HELLO (*13) did load
INTBASIC into Language Card RAM to speed up later switching - if there was a Language Card.
To avoid false detection, DOS 3.3 did clear the first byte of Language Card RAM during cold boot (*14). If one had already loaded either BASIC there, it was necessary to patch that back or have DOS reload it - which happened automatically, when loading/running a related program from diskette.
Bottom line: Apple never supplied Integer BASIC for RAM as a product. DOS 3.3 only included an image for use with a Language Card.
*1 - Applesoft I, based on Microsoft BASIC 1.1.
*2 - Applesoft was fix loaded at $800 and extended up to $3000, right in the middle of Highres page 1.
*3 - Applesoft ][ was based on Microsoft BASIC 2.0
*4 - None of them was relocatable.
*5 - To do so, the
FP command does accept parameters for slot/drive/volume (
*6 - The file was a clever hack of BASIC code plus binary. While the begin was a valid Integer BASIC program, the remaining was the binary image of cassette Applesoft. When started, the BASIC part did setup some vectors, printed a copyright message and started a routine to move the binary part to $800.
*7 - Starting it manually was a bad idea, as it unhooked DOS. When DOS started it (via the DOS
FP command or implied for file type A), It used some wrapping to warmboot afterwards, restoring all pointers needed to hook BASIC.
*8 - The Applesoft loaded by APPLESOFT was not the same as ROM Applesoft image, but the older cassette version, thus including some errors from that time.
*9 - By testing address $E000. Applesoft starts with $4C (JMP) while Integer BASIC got a $20 (JSR) at this address.
*10 - After searching for the file given, DOS looked for the file type and issued an implied
INT to switch for the right BASIC before loading the program.
*11 - There are two different images for either available, distinguishable by size. The 50 sector versions delivered with the first (1980) version of DOS 3.3 contained the full 12 KiB of ROM, including the monitor, while the second (and third) version (1982/83) had 42 sectors. The monitor ROM was now excluded, as for the Apple IIe a different image would have been needed.
*12 - Of course this worked only if either file was present on the drive where the BASIC program was loaded from.
*13 - The turnkey program is a program that gets started after DOS finishes booting. Kinda like
AUTOEXEC.BAT for MS-DOS, except it's name is not predefined, but gets fixed when initializing (formatting) a new disk.
*14 - Write $00 to $E000. See (*9).
Integer BASIC as shipped by Apple in the original ROMs or on DOS diskettes was intended only to run at address E000 to F7FF. On the original Apple II this was ROM which held Integer BASIC. With the language card, it was possible to bank-switch in RAM into this area, and DOS would load a binary image of Integer BASIC, the same as the ROM version, into the RAM in this area, which would then run just like ROM Integer BASIC.
Technically, with a disassembly or the source code, it would not be terribly difficult to relocate Integer BASIC to run it elsewhere in the address space, like in the lower 48 KB of RAM. This would break anything that called into Integer BASIC machine routines at specific addresses, but otherwise should have no side effects aside from less RAM being available to Integer BASIC programs.
If you wanted to run DOS at the same time, you'd have to hack DOS to not overwrite the Integer BASIC in RAM, and to hook into its routines. This would also not be terribly difficult, if I'm remembering right.
I can't find anything online but I would be surprised if it hasn't already been done by someone. I also can't find the link right now, but I do remember reading about one hobbyist who adapted the earlier version of Woz's BASIC for the Apple 1, to run from RAM on an Apple II.
It was, in fact possible to load Integer BASIC into RAM without the Language Card, and without purchasing a modified variant. Back in the day there was a magazine article (Creative Computing, Byte, Nibble come to mind as likely candidates) detailing how to perform the relocation patch. From then on you were good to go.
I would think the article is available in an online archive somewhere, but I have yet to find it. And unfortunately, due to basement flooding I lost my dear retro computing magazine collection collected when I was just a pup.
The Apple II (pre-II+ or IIe) had Integer BASIC in ROM, and you didn’t need a language card to use it - and, in fact, if you had sufficient base RAM, you could load Applesoft BASIC from disk without a language card.
The Apple II+ and IIe both had Applesoft BASIC in ROM, so if you wanted Integer BASIC, you would have to load it from disk - but, again, if you had sufficient RAM, you still didn’t need a language card.
To the best of my recollection, the only time you needed a language card was when you were running a language or application based on the UCSD P-System, which formed the basis of Apple Pascal, Apple FORTRAN, and Apple PILOT (and there were others, but I don’t recall them offhand).