Nice answer from bjb. But here are some simple checks to do if the user can't boot ProDOS.
Power on with no disk (or drive) and hit reset. Then (Test #1) type:
If it goes into 80-column mode they have an 80-column card installed. Now is it 1k or 64k? (Test #2)
TEXT : REM This is to put the cursor at the bottom of the screen
HGR : REM This clears the HIRES screen to black
Vertical white bars in the HIRES area (above the text area) means it's 64k.
Example display after Test #2 from a real Apple //e with 64k RAM card:
If the HIRES area is still black it's most probably 1k, but you could try the following: (Test #3)
C055:0 N 2000:FF N 2001<2000.3FF8M
If this displays vertical white bars in the HIRES area then it's 64k, otherwise if it's all white it's 1k.
Test #2 simply clears the HIRES screen in main ram and then tries to enable DHIRES mode by accessing $C05E. The 1k RAM card doesn't support DHIRES so the black HIRES screen will still be displayed, whereas a 64k (or more) RAM card will enable DHIRES. Since main HIRES is cleared, any data in aux HIRES will appear as vertical stripes in DHIRES. What data will be in aux HIRES?
Apple II RAM is not initialized by the firmware at power-on, but it does take on an initialization pattern determined by the physical characteristics of the hardware. There are several different patterns, but each one is a number of 00's followed by a number of FF's repeated throughout memory. The interaction between this memory pattern and the HIRES memory mapping results in either a checker-board or a horizontally or vertically striped initial HIRES image. (This is the origin of the "venetian blind effect" for the first HGR command after power-on.) Vertical stripes are seen in Test #2 when main HIRES is cleared, aux HIRES still has the pattern, and DHIRES is enabled.
Test #3 will not usually be required on real hardware, but is necessary for testing in emulators that do not initialize Apple II memory with the usual patterns. It uses a few monitor tricks to:
- Combine multiple commands with the N (normal text) command.
- Write to $C055 to attempt to access aux HIRES. A read would be sufficient, but in this command combination a read would interfere by printing a value - the monitor routines use $C054 and $C055 to print 80-column text.
- Attempt to fill aux HIRES with FF's. This will only work as expected on a 64k RAM card.