-
Creating a BIOS extension
01/13/2017 at 05:11 • 14 commentsSo cartridges in PCjr are actually PC BIOS extensions with 055h 0AAh in the beginning and this is how they checked on boot:
with step 2K it's looking for 0x55 0xAA signature and then check CRC:
And this piece shows how BIOS determines which algorithm to use - CRC16 or simple arithmetic sum:
So in order to create proper BIOS extension I wrote CRC16 library compatible with IBM's CRC_CHECK (see here) and special program that creates ROM image from COM-file (for now it has to be specifically created "read-only" COM-file) and put CRC at the end of that ROM image - PCJRCART.C
And this is my 1st program (pictured as title image of the project):
org 100h section .text start: MOV BH,7 ; 0 for DOSBox MOV BL,4 MOV CX,1 MOV DH,18 MOV DL,0 LEA SI,[STRI] NEXT: MOV AH,2 INT 10H INC DX MOV AL,[SI] CMP AL,'$' JE KON MOV AH,9 INT 10H INC SI JMP SHORT NEXT KON: JMP KON section .data STRI DB 'Hello, Hackaday ! $'
Program is compilable by this command (you need NASM):
nasm test1.asm -fbin -o test1.com
now it could be tested in DOSBox for example or from DOS prompt on real machine and then pcjrcart test1.com to produce test1.bin that could be directly written into AT28C256 (or AT28C64 if size<=8K)
UPDATE: This approach (with some tweaks) was successfully used for PC XT machine by @esot.eric :)
https://hackaday.io/project/18868-improbable-secret-project/log/51957-we-have-a-bios-extension
-
Cloning 64KB cartridge
01/10/2017 at 23:54 • 0 commentsThanks @oshpark for these PCBs:
This is a clone of 64KB cartridge - I disassembled one of those to trace wires:
But my clone is for modern EEPROMs AT28C256 (pin 1 is A14):
Memory chips are completely independent, so one 32K could be inserted instead of two:
UPDATE: full 64KB setup was also tested:
UPDATE2: it looks like you can also put there smaller EEPROM 28C64 (8K)
Link to order your boards: https://oshpark.com/shared_projects/vnBQjk6B