The board seems to be a X Golden Board, except for the missing logo on the motherboard.
Downloaded pcxtbios and compiled the eproms native in linux. So i don´t have to use dosbox any more. https://github.com/virtualxt/pcxtbios
cd pcxtbios
edit make_linux.sh if needed
./make_linux.sh
and you should end up with
eproms/27512/basicfc.rom
eproms/27512/basicf8.rom
eproms/27512/basicf6.rom
eproms/27512/pcxtbios.rom
eproms/27512/basicfa.rom
eproms/27128/basicfc.rom
eproms/27128/basicf8.rom
eproms/27128/basicf6.rom
eproms/27128/pcxtbios.rom
eproms/27128/basicfa.rom
eproms/27256/basicfc.rom
eproms/27256/basicf8.rom
eproms/27256/basicf6.rom
eproms/27256/pcxtbios.rom
eproms/27256/basicfa.rom
eproms/ibmxt/u18.rom
eproms/ibmxt/u19.rom
eproms/2764/basicfc.rom
eproms/2764/basicf8.rom
eproms/2764/basicf6.rom
eproms/2764/pcxtbios.rom
eproms/2764/basicfa.rom
I didn’t have enough 28C64, but the 28C256 has the same pinout. It just lacks A14 and A13
So I flashed the compiled ROMs for basic to different Eeproms
PCem (short for PC Emulator) is an IBM PC emulator for Windows and Linux that specializes in running old operating systems and software that are designed for IBM PC compatibles. Originally developed as an IBM PC XT emulator, it later added support for other IBM PC compatible computers as well.
The big difference with PCem and Dosbox is the fact that you can configure many systems from 8088 to pentium, soundcards and graphic cards (like hercules, CGA, EGA VGA and alike) You won’t start in MS-DOS, you can boot from a virtual floppy, just what i needed!
Update : Typing boot disk.img in dosbox works
I’ve installed PCem using:
cd pcem/
sudo apt-get install libsdl2-dev
sudo apt-get install libopenal-dev
tar xzvf ../PCemV17Linux.tar.gz
./configure
make clean
make
# first start (complains about roms, but creates ~/.pcem/...
./pcem
cd ~/.pcem/roms
# git clone roms
git clone https://github.com/BaRRaKudaRain/PCem-ROMs.git
mv PCem-ROMs/* ./
rm -rf PCem-ROMs
Below a simple example, booting a floppy with a custom made bootsector. I’m still searching for our bootblock demo, which uses VGA graphics and a music loader using Soundblaster. We made this around the 90’s, and i have never seen a demo then booting a demo without dos. Scrollers, music, starfields etc.
NOTE: Dos calls can’t be used, that’s not loaded. So NO int 21h software functions!
The disk image I created using my real original 5.25″ floppy, and converted this with my Fluxengine.
One of the other bootblock thingy’s I made, An amiga guru meditation error. (below a old capture) When a corrupted disk or faulty software was booted using a amiga you often could see an error like this, now you could have it on you PC!
Original screen capture of a Guru Meditation. You can see, mine is a little different, because of the font spacing and color.
PCem info
Systems / motherboards emulated :
8088
AMI XT clone
Atari PC3
Compaq Portable Plus
DTK Clone XT
(c)Anonymous Generic Turbo XT BIOS
IBM PC
IBM PCjr
IBM XT
Juko XT clone
NCR PC4i
Phoenix XT clone
Schneider Euro PC
Tandy 1000
Tandy 1000HX
Thomson TO16 PC
Toshiba T1000
VTech Laser Turbo XT
Zenith Data SupersPort
Xi8088
8086
Amstrad PC1512
Amstrad PC1640
Amstrad PC2086
Amstrad PC3086
Amstrad PC5086
Amstrad PPC512/640
Compaq Deskpro
Olivetti M24
Sinclair PC200/Amstrad PC20
Tandy 1000SL/2
Toshiba T1200
VTech Laser XT3
286
AMI 286 clone
Award 286 clone
Bull Micral 45
Commodore PC30-III
Compaq Portable II
Dell System 200
Epson PC AX
Epson PC AX2e
GW-286CT GEAR
IBM AT
IBM PS/1 Model 2011
IBM PS/2 Model 30-286
IBM PS/2 Model 50
IBM XT Model 286
Samsung SPC-4200P
Samsung SPC-4216P
Toshiba T3100e
Tulip AT Compact
386SX
Acermate 386SX/25N
AMI 386SX clone
Amstrad MegaPC
DTK 386SX clone
Epson PC AX3
IBM PS/1 Model 2121
IBM PS/2 Model 55SX
KMX-C-02
Packard Bell Legend 300SX
Samsung SPC-6033P
386DX
AMI 386DX clone
Compaq Deskpro 386
IBM PS/2 Model 70 (type 3)
IBM PS/2 Model 80
MR 386DX clone
Samsung SPC-6000A
486
AMI 486 clone
AMI WinBIOS 486 clone
Award SiS 496/497
Elonex PC-425X
IBM PS/2 Model 70 (type 4)
Packard Bell PB410A
Socket 4/5/7 (Pentium)
ASUS P/I-P55TVP4
ASUS P/I-P55T2P4
Award 430VX PCI
Epox P55-VA
Intel Advanced/EV (Endeavor)
Intel Advanced/ZP (Zappa)
Intel Premiere/PCI (Batman's Revenge)
Packard Bell PB520R (Robin LC)
Packard Bell PB570 (Hillary)
Super Socket 7 (K6-2/III)
FIC VA-503+
Socket 8 (Pentium Pro)
Intel VS440FX
Slot 1 (Pentium II)
Gigabyte GA-686BX
Graphics cards emulated :
3DFX Voodoo Graphics
3DFX Voodoo 2
ATI Graphics Pro Turbo (Mach64 GX)
ATI Video Xpression (Mach64 VT2)
ATI VGA Edge-16 (ATI-18800)
ATI VGA Charger (ATI-28800)
CGA
Cirrus Logic CL-GD5429
Cirrus Logic CL-GD5430
Cirrus Logic CL-GD5434
Compaq CGA
Diamond Stealth 32 (Tseng ET4000/w32p)
Diamond Stealth 3D 2000 (S3 ViRGE/325)
Hercules
Hercules InColor
IBM EGA
IBM VGA
MDA
MDSI Genius
Number Nine 9FX (S3 Trio64)
OAK OTI-037
OAK OTI-067
Olivetti GO481 (Paradise PVGA1A)
Paradise Bahamas 64 (S3 Vision864)
Phoenix S3 Trio32
Phoenix S3 Trio64
Plantronics ColorPlus
S3 ViRGE/DX
Sigma Color 400
Trident TVGA8900D
Trident TGUI9400CXi
Trident TGUI9440
Trigem Korean VGA (Tseng ET4000AX)
Tseng ET4000AX
Wsye 700
Sound cards emulated :
AdLib
AdLib Gold
Ensoniq AudioPCI
GameBlaster
Gravis UltraSound
Sound Blaster v1.0
Sound Blaster v1.5
Sound Blaster MCV
Sound Blaster v2.0
Sound Blaster Pro v1
Sound Blaster Pro v2
Sound Blaster Pro MCV
Sound Blaster 16
Sound Blaster AWE32
Sound Blaster PCI128
Windows Sound System
When selling a large part of my computer collection I kept a few odd pieces.
Amongst those was a 8088 DIY machine.
It is a 50PTX3 motherboard with a 8088 compatible CPU
Power light (Not LED) and connected to power adaptor, not motherboard
Reset button??? not connected
Power switch
Mid center, 5v gnd and 12v
5.25″ drive not connected
Tested the power adapter first, a nice 5V and 12V. Then I plugged the power in the Motherboard add plugged a test ISA card in the slot. After turning the machine on I saw the Address leds flashing
A NEC D70108C from 1984, which is 8088 pin compatible with Intel 8088 but faster, and has some extra functionality. The empty socket is for the 8087 Co-processor.
Everything pretty dirty
Adding an 8bit Isa hercules/CGA card.
It starts! .. But there is no Floppy controller (yet)
I’ve dumped the Bios to a file and used a hexeditor to play around. So that’s why there is a bad checksum.
Installing a ZIF socket (Zero Insertion Force) to make things easier to modify.
Burned GlaBios on the Eprom and now I can continue to play around.
So why? Why this all ..
I want to play around with old 8088 assembly code again, but not as I did before using a Dos machine, but hardcoded into Eproms. I’ve got 8 banks for ROMs and the source code for GlaBios is available.
In the past Edk and me wrote a boot demo, so it was not utilizing Ms-Dos functions. Maybe i can get some graphical and sound stuff working straight from the Bios.
Some commands:
# Dump the bios to file
minipro -w original.rom -p AT2764A@DIP28
xxd and hexdump to view the dump
I've used ghex to alter the ROM
# Write a new bios to a 28C64 (same Eeprom i've used for the C64 Cartridges)
minipro -w /home/henri/Downloads/MYROM -p AT28C64
I was planning to disassemble the Phoenix Bios, but it’s quite hard to differentiate between code and data, there are no named pointers and you have to interpret every line of code.
So GlaBios it is ..
First code to look at:
This is after the whole post reset.
There is a reset pointer at ffff:fffe
Which points to the bootstrap routine, which ends in below machine code.
I'm going to plug my own code over here.
(See the funny remark about Monster as being displayed in one of above pictures)
;----------------------------------------------------------------------------;
; INT 18 - Unbootable IPL
;----------------------------------------------------------------------------;
; Display a disk boot failure message and wait for a key to cold reboot.
;
; This may be re-vectored to ROM BASIC, if present.
;
; Size: 18 bytes
;----------------------------------------------------------------------------;
INT_18 PROC
ASSUME DS:_BDA_ABS
PRINT_SZ BOOT_FAIL ; print boot failure string
XOR AX, AX ; AH = 0 (wait for key)
MOV DS, AX ; DS = 0000
MOV WARM_FLAG_ABS, AX ; do a cold boot
INT 16H ; wait for key press
JMP BOOT ; reboot
INT_18 ENDP
BOOT ENDP
;----------------------------------------------------------------------------;
;
; END OF BIOS POST/BOOTSTRAP
;
;----------------------------------------------------------------------------;
ASSUME DS:_BDA
STRINGS PROC
;----------------------------------------------------------------------------;
; Banner Strings
;
BANNER_STRINGS PROC
IF POST_GLADOS EQ 1
BOOT_BEGIN DB CR, LF
DB 'Starting GLaDOS...'
NL2_Z DB LF ; two NL's, null term'd
ENDIF
NL_Z DB CR, LF, 0 ; one NL, null term'd
BOOT_FAIL DB 'Disk Boot Fail.'
DB ' You monster.'
NL2_ANY_KEY DB LF
NL_ANY_KEY DB CR, LF
ANY_KEY DB 'Press the Any Key'
DB '...'
Assembly stuff
I’ve got Dosbox installed on my machine.
git clone https://github.com/640-KB/GLaBIOS.git I copied MASM.EXE and LINK.EXE in the GLaBios src directory.
edit make.bat
change MASM GLABIOS; into MASM /DVER_DATE=”05/24/23″ /DARCH_TYPE=”T” /DCPU_TYPE=”V” GLABIOS;
Started drawing a Cassette interface in Kicad. This so i can read back my old cassettes with programs. (And write some new stuff)
I’m planning to buy a small micro cassette player. With schematic below, I’m going to use it as save/load device. But also with the same player, I’m going to convert the tape to a wave file, and try to decode the program using python.
While I’m at it, reading the old manuals, a RS-232 interface would be nice also!
UPDATE 20231016
This is the final version
Information about the 7655A. A eprom WITH IO ports! Amazing piece of history hardware.
JiffyDOS is an enhanced DOS for the C64. The software is programmed onto ROM chips that replace the Kernal ROM chip on the motherboard and the DOS ROM chip in the disk drive. JiffyDOS is intended to provide greater speed, commands and convenience than on stock systems.
The 1541 drive is a computer on its own, using a 6502 and VIA chips. (See other pages) (C64 uses a 6510, that is the same slightly modified version of the 6502) A cool example of the drive being an OS/computer on its own: https://www.youtube.com/watch?v=zprSxCMlECA
Some notes:
I want to use a larger rom and using the higher address lines as kernal selector. Address line A13 and A14 can be used as selector
There is a schematic out there using runstop at boottime to do de selection of the rom part
Did I misspell kernel? NO (Below from Wikipedia)
The KERNAL was known as kernel inside of Commodore since the PET days, but in 1980 Robert Russell misspelled the word as kernal in his notebooks. When Commodore technical writers Neil Harris and Andy Finkel collected Russell’s notes and used them as the basis for the VIC-20 programmer’s manual, the misspelling followed them along and stuck.
Original Kernal: 901227-03 8-kilobyte 2364 ROM 4K * 8 bits PROM
28C265 = 32K * 8bits
Diffference in ROM size AND there are some other pin placements.
V0.1
Romselect should be /(a15 * a14 * a13) depending on ram/rom switch.
SEL0
SEL1
0
0
rom0
0
1
rom1
1
0
rom2
1
1
rom3
$E000-$FFFF – ROM 57344-65535
KERNAL ROM or RAM area (8192 bytes); depends on the value of bits #0-#2 of the processor port at memory address $0001 $FFFA-$FFFF – hardware vectors
Using searle’s design, i can draw pixels using composite video out.
Converting b/w png to hex include files, for usage in vasm I did the following.
#Python script to convert black levels to pixels
from PIL import Image
i = Image.open("fash.png")
pixels = i.load() # this is not a list, nor is it list()'able
width, height = i.size
all_pixels = []
for x in range(width):
for y in range(height):
cpixel = pixels[x, y]
if cpixel[1] == 255:
s = '\t.db 0x05,' + hex(int(x)) + ',' + hex(int(y))
print (s)
Running and output example
python3 image.py > out
head out
.db 0x05,0x1,0x16
.db 0x05,0x1,0x18
.db 0x05,0x1,0x19
.db 0x05,0x2,0x7
.db 0x05,0x2,0x8
.db 0x05,0x2,0xc
.db 0x05,0x2,0xd
.db 0x05,0x2,0x17
.db 0x05,0x3,0x5
Control codes and vasm include
01 (01) - Cursor home (Standard ASCII)
04 (04) - Cursor solid
05 (05) - Set graphics pixel (next two bytes = x,y)
0C (12) - Clear screen (Standard ASCII)
0D (13) - Carriage return (Standard ASCII)
0E (14) - Set column 0 to 79 (2nd byte is the column number) or 0 to 39 for a 40 char line
0F (16) - Set row 0 to 24 (2nd byte is the row number)
1B (27) - ESC - reserved for ANSI sequences
vasm include part:
message:
.db 0x01,0x0c ; home and clear
.db 0x1b,0x2d ; disable ansi translation
include "out" ; include hex "png"
.db 0x00 ; end with 0 (part of message print routine)
Use inspect in your webbrowser and change password into input. Just search in the form part. (No you can’t copy paste the ******* field. But you can when you changed this to input)
Hint: Some browsers will highlight the part you are hovering over.