Home

ISA PicoMEM  -  My initialisation procedure


DATE:  November 2024

I was curious about the 'ISA PicoMEM' card, and so I decided to acquire one.  It turned up, and printed on it is, 'Rev 1.14'.

The following is my 'exploration' of configuring it to provide extra conventional memory, a virtual floppy drive, and a virtual hard drive.  For now, as I learn about this card, those three functionalities are all that I am interested in.  Maybe later on, I will explore the other functionalities that the card offers.

Rather than a 'big bang' approach, you will see that I added each functionality in turn.

It is important to note that like all products, the PicoMEM has limitations and requirements.  Refer to here for some.  And some are in the 'Additional information' sections below.  Before purchase, 'do the research' to determine suitability for your intended use of PicoMEM.  The XTMax is a similar product, one that does not have some of the same limitations/requirements.

JAN25:  The next generation of PicoMEM, containing a Pi Pico 2, is forthcoming.  Therefore, some of the information on this web page may not apply to that card.


STEP 1:  Preliminary

I knew from reading, that a microSD card needs to be inserted into the PicoMEM.  The microSD card is where configuration files, floppy disk images, hard disk images, etc. reside.

And I read at here that the last firmware release ('Oct5') for the PicoMEM only supports the SDHC type of SD.

I found a 32 GB sized microSDHC card, formatted it as FAT32 on my Windows 10 machine, then inserted the microSDHC card into the PicoMEM.

( FYI. I later tried a 4 GB microSD {SD, not SDHC}, and that did not work. )


STEP 2:  First turn-on

I brought out an IBM 5160 motherboard of type 256-640KB.  It already had the maximum of 640 KB on it, but since I wanted to experiment with the PicoMEM providing some conventional memory, I set the motherboard switches to enable only the first bank of RAM, i.e. 256 KB.

To the 5160 motherboard I fitted only a power supply, keyboard, and MDA video card.

I know from reading, that the PicoMEM has a BIOS expansion ROM, that by default, starts at address D0000. Knowing the IBM 5160 motherboard, and with the only ISA card fitted being the MDA one, I knew that the PicoMEM's BIOS expansion ROM was not going to conflict with anything.

I fitted the PicoMEM to the motherboard.  (NOTE: Not into expansion slot 8, because, in an IBM 5155/5160, slot 8 is 'special'. )

I turned on the power supply, saw the 5160's power-on self test (POST) count up to 256 KB, then saw a 601 error, as shown at here.
The line starting with 'PicoMEM' informed me that the 5160's POST found the BIOS expansion ROM on the PicoMEM, then executed it.
Next, the 601 error was expected because I do not have a floppy controller+drive fitted.

I pressed F1, then I saw what is pictured at here.

At this point, being curious, I powered off the computer, then viewed the contents of the microSDHC card via my Windows 10 computer.  I saw that the PicoMEM added a file named PICOMEM.CFG to the root of the microSDHC card.

I put the microSDHC card back into the PicoMEM.

I powered on the computer, and this time, when I saw the "Press S for Setup, Other to continue" prompt, I pressed S.  I then saw the PicoMEM's setup screen.

I powered off the IBM 5160 motherboard.


STEP 3:  Adding conventional memory

Here, I will get the PicoMEM to add 128 KB of conventional memory to the 256 KB that is enabled on my motherboard.

( BTW. I could add more than 128 KB if I wanted to.  See the 'Additional information #3' section below. )

3.1 I powered on the IBM 5160 motherboard.
3.2 When I saw the "Press S for Setup, Other to continue" prompt, I pressed S.  I then saw the PicoMEM's setup screen.
3.3 I used the right-arrow key to get to the 'Memory' page.  At the screen top, in the conventional memory box, I could see the motherboard's 256 KB of conventional memory being shown (as a string of 'S' characters).
3.4 I used the down-arrow key to get to the 'PM RAM Extension' field.
3.5 I pressed the ENTER key to change the 'PM RAM Extension' setting to '[On ]'.  At the screen top, in the conventional memory box, I could see 128 KB being added (as a string of 'M' characters).
3.6 I pressed the ESC key to exit Setup.
   
  At this point, the screen cleared, and I saw what I saw earlier (this), except that this time, there was an additional line present: "Emulated memory - Conv 128kB"
   
3.7 The computer booted into Cassette BASIC.  I then entered the two lines of BASIC code shown at here, which (as a confidence thing only) revealed the presence of 384 KB of conventional memory (256 + 128 = 384).
   
  Now to see if the configuration change survives a power cycle.
   
3.8 I powered off the IBM 5160 motherboard, then waited about 15 seconds.
3.9 I powered on the IBM 5160 motherboard.
3.10 I saw the IBM 5160 motherboard's POST count up to 256 KB.
   
  NOTE:  The 256 KB figure is expected.  Why?  Because the PicoMEM's BIOS expansion ROM has yet to execute, and as a result, map the PicoMEM's 128 KB into memory space.
   
3.11 I then saw the expected 601 error, as shown at here.
3.12 In response to the 601 error, I pressed the F1 key.
3.13 The screen cleared, and I saw what is shown at here.
3.14 The computer booted into Cassette BASIC.  I then entered the two lines of BASIC code shown at here, which revealed the presence of 384 KB of conventional memory (256 + 128 = 384).
3.15 I powered off the IBM 5160 motherboard.


STEP 4:  Adding a virtual floppy drive

Here, I will get the PicoMEM to add a virtual floppy drive, one with a 720K sized IBM DOS 3.3 boot diskette in it.

4.1 I moved the microSDHC card from the PicoMEM to my Windows 10 computer.
4.2 In the root of the microSDHC card, I created a folder named 'FLOPPY'.  (All in capitals. I do not know if that matters.)
4.3 Into that folder, I copied the file (my_720k.img) that you can get from here, which is a raw image of a 720K sized IBM DOS 3.3 boot diskette.
4.4 I moved the microSDHC card back to the PicoMEM.
4.5 I powered on the IBM 5160 motherboard.
4.6 When I saw the "Press S for Setup, Other to continue" prompt, I pressed S.  I then saw the PicoMEM's setup screen.
4.7 I used the right-arrow key to get to the 'Disk' page.
4.8 By default, the 'Floppy Drive A' field is the selected field.  I pressed the ENTER key, and a window showing the my_720k.img file popped up.
4.9 I pressed the down-arrow key then the ENTER key.
4.10 I then saw what is shown at here.
4.12 I then used the down-arrow key to get to the 'PicoMEM Boot Code' field, then used the ENTER key to switch that field to [On ].
4.13 I pressed the ESC key to exit Setup.
   
  A boot to A: drive happened.  On the screen is what is shown at here.

( Because I did not press the A key, the PicoMEM's boot code tried at first to boot from any hard drives. )
   
4.14 I powered off the IBM 5160 motherboard.


STEP 5:  Adding a virtual hard drive

Here, I will get the PicoMEM to add a virtual hard drive, one sized at 50 MB.

5.1 I moved the microSDHC card from the PicoMEM to my Windows 10 computer.
5.2 In the root of the microSDHC card, I created a folder named 'HDD'.  (All in capitals. I do not know if that matters.)
5.3 I moved the microSDHC card back to the PicoMEM.
5.4 I powered on the IBM 5160 motherboard.
5.5 When I saw the "Press S for Setup, Other to continue" prompt, I pressed S.  I then saw the PicoMEM's setup screen.
5.6 I used the right-arrow key to get to the 'Disk' page.
5.7 I used the down-arrow key to get to the 'New Disk Image' field.
5.8 I pressed the ENTER key.  A window popped up.
5.9 For the size, I entered: 50
5.10 For the name, I entered: MY50MB
5.11 I saw "Creating Image : 50MB" then, after a few seconds, "Done" then "Press Any Key".
5.12 I pressed the ENTER key.
5.13 I used the down-arrow key to get to the 'HD Drive 0' field.
5.14 I pressed the ENTER key, and a window showing the MY50MB file popped up.
5.15 I pressed the down-arrow key then the ENTER key.
5.16 I then saw what is shown at here.
   
  It is important to note that the drive just now created is empty.
Shortly, I will add a DOS partition to the drive, then high-level format the partition.
I will do that by using the FDISK and FORMAT commands that are on the virtual floppy drive (A:)

Of note, the partition created will be sized at 32 MB (due to IBM DOS 3.3's limit of 32 MB maximum per partition).
   
5.17 I pressed the ESC key to exit Setup.
5.18 The screen cleared, then when I saw this, I pressed the A key so as to boot to A:     <--- boot to A:
5.19 At the A:\> prompt, I entered:  fdisk
5.20 FDISK: I used option 1 (Create DOS partition)
5.21 FDISK: I used option 1 (Create Primary DOS partition)
5.22 FDISK: I pressed the ENTER key to accept the default choice of 'Y' (yes).
5.23 FDISK: I pressed the ENTER key.  A reboot happened.
5.24 The screen cleared, then when I saw this, I pressed the A key so as to boot to A:     <--- boot to A:
5.26 At the A:\> prompt, I entered:  format c: /s
5.27 At the 'Proceed with Format' prompt, I pressed the Y key followed by the ENTER key.
   
  Formatting of the DOS partition happened, followed by the installation of some boot related files, and then the A: prompt returned.
   
5.28 I used a CTRL-ALT-DEL key sequence to reboot the motherboard.  A reboot happened.
5.29 The screen cleared, and I saw a boot to C: happen, as shown at here.
5.30 At the 'Enter new date ...' line, I pressed the ENTER key.
5.31 At the 'Enter new time ...' line, I pressed the ENTER key.
   
  I then had a C:> prompt.


STEP 6:  Populating the hard drive

The hard drive is booting to IBM DOS 3.3, but lacks a DOS directory, and lacks AUTOEXEC.BAT
We will now copy those over to the hard drive from the A: drive.

6.1 At the C:> prompt, I entered:  a:\dos\xcopy a:\*.* /s 
6.2 I used a CTRL-ALT-DEL key sequence to reboot the motherboard.  A reboot happened.

I then had a C:\> prompt.  Entering a  dir command, I saw the files and directories that I had copied over.


Additional information #1

At boot, I still see the motherboard's POST display '256KB'.  That is expected.  At that time, the PicoMEM's BIOS expansion ROM has not yet been executed by the POST, and therefore the PicoMEM has yet to add its 128 KB of conventional memory.


Additional information #2

At boot, I still see the motherboard's POST display a 601 error.  That is expected, because my IBM 5160 motherboard does not have a floppy controller+drive fitted to it.

The situation is better on an IBM 5150 (IBM PC) motherboard, fitted with IBM BIOS.  That is because, after the 601 error, there is no prompt to press the F1 key.  Better yet, I can get rid of the 601 error by informing the 5150's POST that there are no floppy drives present, done via switch 1 on motherboard switch block SW1.  I can't do that on an IBM 5160 (with IBM BIOS)


Additional information #3

When it comes to supplying RAM, the PicoRAM can source that RAM from two possible sources on the PicoRAM:

OPTION #1:  Source = Pi Pico internal RAM.  Fast (zero wait states), but the added conventional memory is limited to 128 KB maximum.
OPTION #2:  Source = PSRAM.  Slow (six wait states) compared to the Pi Pico's RAM.

The procedure on this web page (me having a 'first go' at using the PicoMEM) uses the first option.

Had I instead, wanted to use the second option (PSRAM), then on the 'Memory' page of the PicoMEM setup screen, 'PSRAM Extension' is what I would have turned on.

In a quick try, I could see that both options can be activated at the same time.


Additional information #4

If I move the above-configured card to a computer that has a different amount of conventional memory, I will discover that the PicoMEM no longer emulates any conventional memory.
That is 'by design'.
I will need to go into the PicoMEM's setup screen, and do the memory configuration again.


Additional information #5

If instead, you intend to fit the PicoMEM to an IBM 5150:

The IBM 5150 (with IBM BIOS) behaves differently to the IBM 5160 (with IBM BIOS).
   
Because the PicoMEM contains a BIOS expansion ROM, the 5150's motherboard will need to have the final BIOS revision, the 10/27/82 one.
   
In the IBM 5150, the PicoMEM's conventional memory is not a substitute for motherboard RAM.  The IBM 5150 rule is 'Populate all motherboard RAM banks before adding any card-supplied conventional memory.'  Failure to observe that will result in bus contention on the data bus, contention/conflict between the card, and the U12 chip on the 5150 motherboard.
   
Do not adjust the switches in motherboard switch block SW2 to cater for the PicoMEM's conventional memory.  Think of the PicoMEM as 'different' to a normal conventional memory card.


Additional information #6

If a floppy disk controller and drive is used alongside the PicoMEM, it is possible (i.e. not definite) that floppy drive reading and writing done by DOS will not work on that drive.

Why?

DMA transfers will fail if the transfer area is in RAM that the PicoMEM provides.  A floppy disk controller uses DMA, specifically DMA channel 2, during reading and writing operations.
- Reading and writing operations by DOS will work if DOS places the DMA tranfer area in physical RAM (RAM on motherboard or on a 'normal' RAM card).
- Reading and writing operations by DOS will not work if DOS places the DMA tranfer area in RAM provided by the PicoMEM.

Some discussion on this subject is in posts #281 through #283 at here.


Additional information #7

If an XT-class hard disk controller and drive is used alongside the PicoMEM, it is possible (i.e. not definite) that hard drive reading and writing done by DOS will not work on that drive.

Why?  For the same reason given in 'Additional information #6' above, noting that an XT-class hard disk controller uses DMA channel 3.


Additional information #8

EMS does not work at high motherboard clock speeds:

July 2024: At here, FreddyV, the creator of the PicoMEM, wrote, "EMS Does not work on the Book8088 at 8MHz."
January 2025: At here, nikolarun could not get EMS operational on a "clone XT NEC V40".  Later, at post #342, nikolarun reported that EMS is operational when he has turbo turned off.
January 2025: On an 8 MHz XT clone motherboard of mine, EMS is operational at 4.77 MHZ, but not at 8 MHz.