Today I was working on my own brew ISA card (wirewrapping). Did some mini modeling stuff. Sorted some pipetunes. And played around with my 8086.
Got it on a desk now, and replaced the harddisk with the CF card. Also got an old SoundBlaster working, so i wanted to see what of my old code could still run. Apparanty most code was compiled for 386/486 🙁 So i recompiled some stuff. Below a horizontal scroller example.
Meanwhile i got my new fans in for my NUC (Kodi player, it was making a hell of a noise due to bad ball bearings.
Adding a picture: Most used is loading a koala picture. Never done it like this before, luckily loads of retro lovers are posting code examples. There are a lot of tools now available on PC. (Windows and Linux)
Acme : compiler i’ve used for this example Retropixels : converting jpg into koala Exomizer : packing/compressing the C64 prg (16k to 5.4k) Sidreloc : relocator for SID files.
Exomizer command with effect: (NOTE on linux you have to use single qoutes!)
retropixels -r 64 --format prg bottom.jpg ; for a prg (not used)
retropixels bottom.jpg ; for a koala picture
exomizer sfx 0x080d bottom.prg -x 'lda $fb eor #$01 sta $fb beq skip dec $d020 inc $d020 skip:'
# 0x080d is the starting address
Code
!to "bottomsm.prg",cbm
; start prg
* = $0801
; header for sys auto start
!byte $0b, $08, $00, $00, $9e, $32, $30, $36, $31, $00, $00, $00
PICTURE = $2000
BITMAP = PICTURE
VIDEO = PICTURE+$1f40
COLOR = PICTURE+$2328
BACKGROUND = PICTURE+$2710
* = $080d
sei
lda #<irq
ldx #>irq
sta $314
stx $315
lda #$1b
ldx #$00
ldy #$7f
sta $d011
stx $d012
sty $dc0d
lda #$01
sta $d01a
sta $d019 ; ACK any raster IRQs
lda #$00
jsr $1000 ; Call music
lda #$00
sta $d020 ; Border Color
lda BACKGROUND
sta $d021 ; Screen Color
; Transfer Video and Color
ldx #$00
.LOOP
; Transfers video data
lda VIDEO,x
sta $0400,x
lda VIDEO+$100,x
sta $0500,x
lda VIDEO+$200,x
sta $0600,x
lda VIDEO+$2e8,x
sta $06e8,x
; Transfers color data
lda COLOR,x
sta $d800,x
lda COLOR+$100,x
sta $d900,x
lda COLOR+$200,x
sta $da00,x
lda COLOR+$2e8,x
sta $dae8,x
inx
bne .LOOP
; Bitmap Mode On
lda #$3b
sta $d011
; MultiColor On
lda #$d8
sta $d016
; When bitmap adress is $2000 ; Screen at $0400 ; Value of $d018 is $18
lda #$18
sta $d018
cli
.MYLOOP
jmp .MYLOOP
irq
lda #$01
sta $d019 ; ACK any raster IRQs
jsr $1003 ;Play the music
jmp $ea31
; Data parts with headers cut
* = $1000
!binary "bottom1000.sid" ,, $7c+2
* = PICTURE
!binary "bottom.kla",,2
Started with a example from https://codebase64.org/
But that didn´t work (see movie clip)
looking at the sid info:
Title Bottom
Author Richard Bayliss
Released 2011 The New Dimension
Load Address $8000
Init Address $8000
Play Address $8003
Number of tunes 1
Default tune 1
Speed $00000000
SID Model 8580
Clock PAL
File Format PSID
Format Version 2
BASIC false
PlaySID Specific false
I saw that I have to move the load/init/play address.
Luckily there is sidreloc !
wget https://hd0.linusakesson.net/files/sidreloc-1.0.tgz
tar xzvf sidreloc*
cd sidreloc
make
It’s fitted with a 64Mb card. Note: the XT at my parents place had a 20Mb harddisk!
It can boot / emulate a harddisk with MsDos installed.
Replace an old or dead hard drive in a vintage PC with a hassle-free, reliable CompactFlash card! Plug-in and go! (well, as much as you can expect with these old machines)
Brand new! Built and tested.
Open Source!
This bootable expansion card provides a Compact Flash card interface to 8-bit ISA systems such as PC/XT. Typically paired with a 64MB or 1GB CF card. Silent, and more reliable than an old mechanical hard drive.
By default the XT-IDE BIOS comes configured for: XT(and higher)-compatible BIOS. Use the XT-CF-Mini’s IDE interface at 300h, no IRQ. Boot first hard drive unless user presses A for floppy. Any of the above can be changed with the simple DOS utility and built-in switches.
Switches and jumpers control: I/O port for the 8-bit IDE (CF) interface I/O port for the Option ROM Option ROM Enable Option ROM Write-protect
Note: Not all CF cards will work. Most work, but some don’t adhere to the CF standard fully, and won’t work. The full size XT-IDE card with an IDE>CF adapter, is compatible with more CF cards.
https://github.com/Bluelavasystems/XT-IDE-CF-MINI XT-CF-Mini Pcb designed by Monotech Pc’s and released opensource GNU General Public License v3.0
It is from Blue Lava Systems, who took the schematics from Sergey Kiselev, who took the design from James Pearce.
The harddisk extension is XT-IDE Universal BIOS. And can be flashed.
ROM address D0000, and IO port 300h does not need a IRQ
After installing this on my 8088/v20 motherboard I tested this with GlaBIOS, but it gave me one beep, and after that it woukd reset the machine.
Testing with the original Phoenix Bios and PCXtBios worked for me.
UPDATE: Bad contacts and a eeprom I didn’t trust. Greg gave me version 0.2.5 of Glabios, which I burned to a new eeprom. And I cleaned some contacts. (Checksum rom changed with every reset)
The Card and my extension bios both run with all bios-ses
While doing some wood work, routing and painting. I managed to have some time to experiment with my PC200.
The Amstrad PC20 / Sinclair PC200 was a home computer created by Amstrad in late 1988. The machine was available in two versions, Sinclair PC200 and Amstrad PC20. (US/UK?)
The limited CGA graphical capabilities and PC speaker sound output were greatly inferior compared to other home computers of the time. I has a modulator to connect a TV and could do hercules graphics on a sub-9 interface.
I got this computer a long time ago. (I still have to post pictures of my collection and getting them out of storage)
Info about this machine:
Build in 1988, Intel 8086 @ 8Mhz 512KB memory 3.5″ Floppy drive TV Modulator Pal 640×200 CGA and Hercules
PC200
It still had a floppy in its drive, NIMMO Disk Juli 1992
Apparently this machine was used with a modem to do some interviewing for the University Amsterdam using Telepanel/Interview!
The ROM has several language options which you could set with dipswitches.
Debug part of ROM
Besides the machine having a “amiga” like case, it has two ISA slots behind a little trapdoor! How cool is that!
Dirty view of the ISA slots (One containing a RTC card)
Enabling only CGA on the machine and plugging in a Hercules card, you can do Multiscreen! CGA and MDA addresses don’t conflict! And if the ROM supports it .. dual screens baby!
Left Hercules and Right CGA
I used a debug command to fill the right screen
f b800:0 1000 ‘f a s h’
Cool little machine
Running old masm/precompiled machine code crashes. I’ll have to look into that.
Today two boot projects. One using a bios extension, so it chip based. Second is a floppy disk boot program. (Creating a test situation to get our old Boot floppy demo working. ( That one without using an operatingsystem like ms-dos.
Creating a Secondary Bios ROM
NAME mycode
.model small
ORG 0h
.code
dw 0AA55h ; Magic header your bios is looking for
db 16 ; lenght of this rom in 512 bytes == 8k
jmp short clear ; jmp to program
ORG 20h ; start of program
clear: mov cx,10 ; clear, set keyboard led and print 10 # chars
mov ah,0ah
mov al,31h
int 10h
mov bh,0
mov cx,1
start: mov al, 11000000b
out 80h, al
print: mov cx,10
mov ah,0ah
mov al,"#"
int 10h
loop1: nop ; loop until doomsday
jmp loop1
db -68 ; This makes the checksum 0
; steps to take: edit source, make this byte entry 0
; compile using make.bat in dosbox
; check checksum using my python script
; output was 68 hex 0x44
; edit asm file place -68 to make the checksum 0x00 again
; compile and burn to ROM
ORG 2000h ; create end of rom 0000h-1fffh = 8K
END
make.bat in dosbox
@ECHO OFF
MASM /DARCH_TYPE="T" /DCPU_TYPE="V" 1;
LINK 1;
EXE2COM 1.EXE
Below board replaces 2364 (8k) with a 28c256 (32k 4 roms) socket. My design in Kicad
The rom can be selected using the pressing restore while starting the C64. ( This button press to select is not my idea but I liked it, when I find the original idea I’ll post it.
After ordering and testing, I’ll attach the Gerber files.
While working on a Lidar project, my mouser components came in.
Now I have to find a IO address decoder schematic I made a while ago.
This ISA board is going to have a Wirewrapped setup. There is a 8255 IO chip, and uses 3x 74138 for IO address decoding, OR i will use a setup i’ve made for my 6502 using an atf22v10.
What to controll using this 8255? First some Leds, later a LCD display.
Below the 3 mentioned IC’s
The 8255 is a chip like the 6522 used in my DIY 6502 elsewhere on my site.
Overview of comparable IO chips. ( Not interchangeable due to bus timing!) Most of them have 8 data lines and 2x 8 IO bi-directional lines.
CHIP
NOTES
6522
6502 based machines
8255
8088/8068 based machines
Z84C2008
Z80 (called PIO)
8155
8085 / 8088
8520
68000 amiga
6821
6800
6821 example
UPDATE 20230702
Started wirewrapping, luckily i’ve got a big choice of colors. That makes finding the right signals a breeze.
UPDATE 20230703
Found my schematic
Above uses 3 74138 decoders, address can be “programmed” using jumpers (not used on my prototype board) . Address 0400h in above example.
A15 – 0 A14,13,12 – decodes to OUT-0 A11 – 0 A10,9,8 – decodes to OUT-4 A7 – 0 A6,5,4 – decodes to OUT-0 A3 and A2 are not used (see note) A1 and A0 are register select on the 8255
Address 0000,0100,0000,xxrr xx can be a 0 or 1 the 8255 can be controlled using 0400h 0401h 0402h but also 0404h 0405h 0406h 0408h 0409h …. 040Ch ……
UPDATE 20230714 – Alternative address decode test with ATF22V10
UPDATE 20230803
UPDATE
Miswired second 74138. Tested with below code
mov dx,503h # control register
mov al,80h # output port a,b,c as standard IO/output
out dx,al # 16 bit IO mapped IO out
mov dx,500h # data register
mov al,0 # 0/ff all on/all off
out dx,al
My BBC Acorn model B is working again. The original monitor is still dead.
Time to play with some machine code and ROMs.
My machine has a NFS rom installed. (NetFS)
Econet was Acorn Computers’s low-cost local area network system, intended for use by schools and small businesses. It was widely used in those areas, and was supported by a large number of different computer and server systems produced both by Acorn and by other companies.
I found a ROM online called Gremlin. It is a 16K rom file. But at the moment I only got some 28C64 (8k) or 28C256 (32k) eeproms.
32k it is. But de beeb having address line A14 floating high, I need to flash the upper 16k of the 32k ROM.