Dracblade SBC

The Dracblade is a SBC (single board computer) made to emulate an old computer running CP/M and MP/M.

  • PSU: 7 - 20 V dc in, center pin positive (+).
  • cpu: Parallax P8X32 Propeller
  • memory: 512k byte AS6C4008 SRAM chip, as external memory
  • eeprom: 32k byte - 24LC256 eeprom
  • storage: SD card slot
  • serial ports: 1 x DE9 female, 1 x DE9 male
  • other ports: VGA, keyboard (ps/2), mouse (ps/2), TV out (pin header),

How to get it running: format SD card as fat16, put all .dsk files on it. Use bst (bstl) to download software for the propeller (which file?)

How I actually got it running: compiled KyeDOS with bstc, uploaded with Loader.py, inserted a fat32-formatted SDcard, pressed the reset button.

Hints: turn off rts/cts checking to allow input from serial: stty -F /dev/ttyUSB0 -crtscts,

OS testing: CP/M and MP/M, KyeDOS, OS/9, ?

Back to retrocomp page.

Links

homepage, forum thread, CadSoft (home of EAGLE). PropDOS,

Forum links

PocketTerml, Catalina 3.3, Catalina (Catalina C) 3.2, KyeDOS, Capacitance Meter demo on VGA, Loader.py,

History / work log

2021-09-15: I re-created this page on my self-hosted web server.

2013-03-06: serial setup. Connect an usb-to-serial adapter to the female serial connector on the DracBlade (the connector closest to the edge of the card). From your linux machine do this: verify that the serial adapter shows up as /dev/ttyUSB0:

tingo@kg-u35jc:~$ ls -l /dev/ttyU*
crw-rw-r-- 1 root dialout 188, 0 Mar  6 22:08 /dev/ttyUSB0

turn off hardware flow control:

stty -F /dev/ttyUSB0 -crtscts

connect at speed 115200:

tingo@kg-u35jc:~/work/u35jc$ cu -s 115200 -l /dev/ttyUSB0
Connected.

after connected, press enter

Command Not Found! Try Help
>

you're now in KyeDOS:

>help

Command Listing
<clear>                        - Clear the screen.
<echo> <string>                - Echo the string argument.
<reboot>                       - Reboot the propeller chip.
<help>                         - Show the command listing.
<mount> <partition>            - Mount the file system.
<unmount>                      - Unmount the file system.
<df> <fast>                    - Free sector count. F=Fast. 1 Sector = 512 Bytes
<du> <fast>                    - Used sector count. F=Fast. 1 Sector = 512 Bytes
<ls> <all>                     - List contents of the working directory. A=All.
<dir>                          - List contents. Includes wildcards eg dir *.exe
<cat> <file> <hex>             - Print the ASCII interpreted contents of a file.
<cd> <directory>               - Change directory.
<chmod> <entry> <attributes>   - Change Attrib: R=R/O, H=Hidden, S=Sys, A=Arch
<mv> <oldPath> <newPath>       - Move a file or directory.
<rm> <path> or <era>           - Remove a file or directory.
<mkfile> <name>                - Make a new file.
<mkdir> <name>                 - Make a new directory.
<cp> <oldPath> <newPath>       - Copy a file.
<diff> <path> <path>           - Print differences between two files.
<boot> <file>                  - Reboot the propeller chip from a file.
<filename>                     - Reboot and run filename.exe
<format> <partition>           - Format and mount the file system.
<date>                         - Display the current date and time.
<time>                         - Change the current date and time.
<dump>                         - Dump the ROM font.
<test>                         - Speed test the file system.

You can start CP/M like this (runs cpm.exe):

>cpm
SIO initialized, 5 cogs free.
KBD initialized, 4 cogs free.
VGA initialized, 2 cogs free.
qZ80 I/O starting...
Volume serial #E3E6-DA22, label NO NAME   
BOOT.DSK, sector 01F7C0, size 256, 2011-10-09 02:23:42
A.DSK, sector 0237E0, size 32.0MB, 2011-10-09 02:23:42 contiguous - okay.
B.DSK, sector 01F7E0, size 8.0MB, 2011-10-09 02:23:42 contiguous - okay.
C.DSK, sector 01B7C0, size 8.0MB, 2011-10-09 02:23:42 contiguous - okay.
I/O initialized, 1 cogs free.
VT100 initialized, 0 cogs free.
Going to start qz80. Goodbye Spin!

64K CP/M Version 2.2 (qZ80, BIOS V1.27_Zi04, 3 HD, 21-Apr-2010)

SuperSUB V1.1
Submit file not found error on line number: 0

A>

Now you are ready to play.

2011-11-09: I got a new compact keyboard for use with the machine, a Cherry G84-4100 (black). The connector is usb, but it comes with a usb to PS/2 adapter. It cost me NOK 589.- from Dustinhome.no. I tested the new keyboard - it works.

2011-10-12: How to fix files that are UTF16: some files are like this:

tingo@kg-u35jc:~/work/drac/cpm$ file K*
Keyboard.spin: Little-endian UTF-16 Unicode English text, with CRLF, CR line terminators

To fix it do this:

tingo@kg-u35jc:~/work/drac/cpm$ mv Keyboard.spin oKeyboard.spin
tingo@kg-u35jc:~/work/drac/cpm$ iconv -f UTF16 -t ASCII -c oKeyboard.spin -o Keyboard.spin

The new file is now correct:

tingo@kg-u35jc:~/work/drac/cpm$ file K*
Keyboard.spin: ASCII English text, with CRLF line terminators

That's it.

2011-10-12: cp/m - I uncommented #define USER0_PS2_VGA in cpm.spin, compiled the code, renamed cpm.binary as cpmvga.exe and put it on the SD card. Connected up a ps/2 keyboard, and a vga monitor. Testing: KyeDOS works, cp/m (cpmvga.exe) works. Yay! Hmm, the keyboard layout of the ps/2 keyboard is US.

2011-10-09: cp/m - I changed the speed in io.spin from 38400 to 115200 (line 62, baud = 115200), recompiled cpm and put the new cpm.exe on the sd card. Reset the DracBlade card, and started cp/m:

>Testing for SD card
*** KyeDOS SD card operating system v3.01 by Kwabena W. Agyeman & J. Moxham ***
Type Help for command listing
>dir

DCIM         TRASHE~1     TYPE.EXE     XMODEM.EXE   CPM.EXE      C.DSK       
BOOT.DSK     B.DSK        A.DSK        COMMAND.TXT  CPM_384.EXE 

>cpm
SIO initialized, 5 cogs free.
KBD initialized, 4 cogs free.
VGA initialized, 2 cogs free.
qZ80 I/O starting...
Volume serial #E3E6-DA22, label NO NAME   
BOOT.DSK, sector 01F7C0, size 256, 2011-10-09 02:23:42
A.DSK, sector 0237E0, size 32.0MB, 2011-10-09 02:23:42 contiguous - okay.
B.DSK, sector 01F7E0, size 8.0MB, 2011-10-09 02:23:42 contiguous - okay.
C.DSK, sector 01B7C0, size 8.0MB, 2011-10-09 02:23:42 contiguous - okay.
I/O initialized, 1 cogs free.
VT100 initialized, 0 cogs free.
Going to start qz80. Goodbye Spin!

64K CP/M Version 2.2 (qZ80, BIOS V1.27_Zi04, 3 HD, 21-Apr-2010)

SuperSUB V1.1
Submit file not found error on line number: 0

A>

That was easy.

2011-10-09: starting cp/m blind: first I connect with cu at 38400; then I reset the DracBlade, wait a couple of seconds, type "cpm" on the ps/2 keyboard and press enter. This is the serial output:

tingo@kg-u35jc:~$ cu  -s 38400 -l /dev/ttyUSB0
Connected.
�����������������������������
SIO initialized, 5 cogs free.
KBD initialized, 4 cogs free.
VGA initialized, 2 cogs free.
qZ80 I/O starting...
Volume serial #E3E6-DA22, label NO NAME   
BOOT.DSK, sector 01F7C0, size 256, 2011-10-09 02:23:42
A.DSK, sector 0237E0, size 32.0MB, 2011-10-09 02:23:42 contiguous - okay.
B.DSK, sector 01F7E0, size 8.0MB, 2011-10-09 02:23:42 contiguous - okay.
C.DSK, sector 01B7C0, size 8.0MB, 2011-10-09 02:23:42 contiguous - okay.
I/O initialized, 1 cogs free.
VT100 initialized, 0 cogs free.
Going to start qz80. Goodbye Spin!

64K CP/M Version 2.2 (qZ80, BIOS V1.27_Zi04, 3 HD, 21-Apr-20
SuperSUB V1.1
Submit file not found error on line number: 0

A>

Wohoo! IT works! More output:

A>dir
A: CBIOSX   BAK : PIP      COM : CCP      MAC : CPMBOOT  COM
A: BNKBDOS  SPR : BOOT     COM : BOOT     MAC : EX       $A$
A: MPMD     LIB : COPY     COM : MCC      SUB : ABORT    RSP
A: MPM      COM : BDOS     MAC : MOVER    COM : ZIBOOT   MAC
A: L80      COM : MOVER    MAC : BNKXIOS  SPR : GENSYS   COM
A: DIRX     COM : WS       COM : BNKXDOS  SPR : RESXIOS  SPR
A: BDOS     COM : INTER    LIB : XDOS     SPR : SURVEY   MAC
A: DSKBOOT  COM : CCP      COM : MCCL     SUB : CBIOSX   COM
A: EC8080   LIB : ASM      COM : ZIBOOT   COM : CREF80   COM
A: DDT      COM : DO       COM : DUMP     COM : ED       COM
A: EXZ80DOC COM : FORMAT   COM : GO       COM : HALT     COM
A: M80      COM : LIB80    COM : LOAD     COM : LS       COM
A: LU       COM : LINK     COM : ECZ80ALL LIB : ECZ80DOC LIB
A: STAT     COM : SUBMIT   COM : SURVEY   COM : UNCR     COM
A: UNERA    COM : UNERA    MAC : BOOTGEN  COM : XSUB     COM
A: BOOTGEN  SPL : DDT2     COM : WS       OVR : WSMSGS   OVR
A: MBASIC   COM : BAS      SUB : BASCOM   COM : BRUN     COM
A: ASM      SUB : ASSEMBLY TXT : ZASM     SUB : ASSMBLYM TXT
A: SBASIC   COM : OVERLAYB COM : WSU      COM : WS       BIN
A: WSCHANGE COM : WSCHANGE OVR : WSCHHELP OVR : WSHELP   OVR
A: WSPRINT  OVR : WSPRINT  TST : WSREADME TXT : WSSHORT  OVR
A: PACMAN95 COM : BBCBASIC COM : DDTZ     COM : ASSEMBLY COM
A: RW       COM : SBENTIRE TXT : UNARC    TXT : UNARC    COM
A: DDTZ27   ARK : DDTZ27   COM : SUB2     COM : MPMSTAT  BRS
A: SUPERSUB COM : I8085    LIB : SYSTEMNB DAT : SYSTEMB  DAT
A: SHELL    SUB : CPM      MAC : LDRBIOS  MAC : EX       REL
A: SYSTEM   DAT : SCHED    BRS : SPOOL    BRS : TMP      SPR
A: SCHED    RSP : SPOOL    RSP : RESBDOS  SPR : CPM      COM
A: DDTZ     MAC : GENHEX   COM : TIMER    COM : PIP2     COM
A: NEW      COM : DIF      COM : RMAC     COM : GENMOD   COM
A: SHOWSEC  COM : CC       COM : CLINK    COM : Z80      LIB
A: STDIO    H   : TREADLES LIB : CC2      COM : BUTTONS  LIB
A: C        CCC : SIMPIO   LIB : SEQIO    LIB : CLIB     COM
A: STACK    LIB : DISKDEF  LIB : EX8080   COM : DSTACK   LIB
A: COMPARE  LIB : NCOMPARE LIB : WHEN     LIB : DOWHILE  LIB
A: SELECT   LIB : EX       MAC : SYSMPM   SUB : MC       SUB
A: MPMLDR   COM : LIB      COM : SYSCOPY  COM : XFORMAT  COM
A: DUMP     MAC : MPMSTAT  RSP : KEYI     ASM : MPMD     BAK
A: MPMXIOS  BAK : EXCONFIG LIB : MPMXIOS  MAC : ROUTIN   COM
A: LOGOFF   COM : CFGCCP   BAK : SYSCPM2  BAK : SYSCPM2  SUB
A: CBIOSX   MAC : CFGCCP   LIB : WINP     COM : XMODEMF  ASM
A: XMODEMF  COM : TEST     DAT : XM1      COM : XM2      COM
A: LCDBOOT  ASM : LCDBOOT  COM : MPM      SYS : QUEUE    COM
A: VT100    COM : TEST     TXT : PARSE    BAS : XDOS     COM
A: MAKEMPM  SUB : SLEEP    COM : MPMXIOS  CRF : FST      COM
A: BABEL    COM : BABEL2   COM : BABEL4   COM : BABEL3   COM
A: BABEL    INI : BABEL4   BAS : WINP     BAS
A>

Does it work for the other drives as well?

2011-10-09: compiling cp/m:

tingo@kg-u35jc:~/work/drac/cpm$ bstc -b -O xr cpm.spin
Found a USB Serial Device
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
Compiled for i386 Linux at 08:17:46 on 2009/07/20
Loading Object cpm
Loading Object io
Loading Object fatfs
Loading Object spi_warp
Loading Object pcFullDuplexSerial2FC
Loading Object Keyboard
Loading Object VGA_HiRes_Text
Loading Object vt100_mono
Loading Object qz80
Program size is 31168 longs
Compiled 8070 Lines of Code in 0.581 Seconds
tingo@kg-u35jc:~/work/drac/cpm$

then just copy the resulting file cpm.binary to the SD card as cpm.exe.

2011-10-09: fixing serial input:

tingo@kg-u35jc:~$ stty -F /dev/ttyUSB0 -crtscts

after that one, serial input works in KyeDOS. Note: you might need to re-run this command every time you connect with cu.

2011-10-08: compiling code, using bstc:

tingo@kg-home:~/work/prop/kyedos$ ../bstc.linux -e KyeDOS3.spin
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
Compiled for i386 Linux at 08:17:46 on 2009/07/20
Loading Object KyeDOS3
Loading Object SD3.01_FATEngine.spin
Loading Object DS1307_RTCEngine.spin
Loading Object ASCII0_STREngine.spin
Loading Object VGA_1024_VT100
Loading Object vga_80x40
Loading Object Pocketerm_Keyboard
Loading Object DracLCD
Loading Object timing
Loading Object pcFullDuplexSerial2FC
Program size is 25812 longs
Compiled 3981 Lines of Code in 0.226 Seconds

this compiles code for the eeprom.

2011-10-08: uploading the code, using Loader.py:

tingo@kg-home:~/work/prop/kyedos$ ../Loader.py KyeDOS3.eeprom
Uploading KyeDOS3.eeprom
Connected (version=1)
Sending code (32768 bytes)
Programming EEPROM
Verifying EEPROM
Done

Huh, all nice and easy. Let's try to connect to the machine, and then press the reset button:

tingo@kg-home:~$ cu -s 115200 -l ttyUSB0
Connected.
Testing for SD card

Ok, let's give the machine a SD card, and press reset again:

Testing for SD card
*** KyeDOS SD card operating system v3.01 by Kwabena W. Agyeman & J. Moxham ***
Type Help for command listing
>

Except that it doesn't accept input from the serial console, it works. Here is the complete start, with a SD card inserted:

tingo@kg-home:~$ cu -s 115200 -l ttyUSB0
Connected.
Testing for SD card
*** KyeDOS SD card operating system v3.01 by Kwabena W. Agyeman & J. Moxham ***
Type Help for command listing
>

but no input. Time to find a ps/2 keyboard. With a ps/2 keyboard connected, I can type commands:

>�Testing for SD card
*** KyeDOS SD card operating system v3.01 by Kwabena W. Agyeman & J. Moxham ***
Type Help for command listing
>help

Command Listing
<clear> - Clear the screen.
<echo> <string> - Echo the string argument.
<reboot> - Reboot the propeller chip.
<help> - Show the command listing.
<mount> <partition> - Mount the file system.
<unmount> - Unmount the file system.
<df> <fast> - Free sector count. F=Fast. 1 Sector = 512 Bytes
<du> <fast> - Used sector count. F=Fast. 1 Sector = 512 Bytes
<ls> <all> - List contents of the working directory. A=All.
<dir> - List contents. Includes wildcards eg dir *.exe
<cat> <file> <hex> - Print the ASCII interpreted contents of a file.
<cd> <directory> - Change directory.
<chmod> <entry> <attributes> - Change Attrib: R=R/O, H=Hidden, S=Sys, A=Arch
<mv> <oldPath> <newPath> - Move a file or directory.
<rm> <path> or <era> - Remove a file or directory.
<mkfile> <name> - Make a new file.
<mkdir> <name> - Make a new directory.
<cp> <oldPath> <newPath> - Copy a file.
<diff> <path> <path> - Print differences between two files.
<boot> <file> - Reboot the propeller chip from a file.
<filename> - Reboot and run filename.exe
<format> <partition> - Format and mount the file system.
<date> - Display the current date and time.
<time> - Change the current date and time.
<dump> - Dump the ROM font.
<test> - Speed test the file system.

>

Very cool!

2011-10-08: soldering in some of the missing resistors: R3, R4, R22 and R23. All 100R.

2011-10-08: checking out the resistor kit. Five of each value: 100R, 120R, 150R, 180R, 220R, 270R, 330R, 390R, 470R, 560R, 680R, 820R.

2011-10-08: faultfinding. I removed the Propeller chip (IC6) and used a bit of wire to short pins 39 and 40 in the socket. I powered up the board, connected the usb-to-serial adapter and ran cu -s 115200 -l ttyUSB0 again. Interesting, I'm only getting garbage. If I run cu -s 9600 -l ttyUSB0 instead, I get the characters I type, and both the red and the green LED blinks. Next, I put the Propeller chip back in, and measure the voltage on IC6 pin 11 to about 3.2V (ground on pin 9). By using a test lead between pin 1 on the prop plug header (ground) and the lead of R20 closest to the transistor (Q3) I ground the base of Q3. Now the voltage at pin 11 is 0.6V. So Q3 works. I exchange the provided usb-to-serial adapter with another (a generic pl-2303 adapter), and try F7 in proptool (Windows). Now it says: "Propeller chip version 1 found on COM8.". Cool. Let's try it in Linux. The adapter shows up in /var/log/messages as:

Oct  8 16:53:16 kg-u35jc kernel: [1134193.063887] usb 2-1.2: new full speed USB device using ehci_hcd and address 10
Oct  8 16:53:16 kg-u35jc kernel: [1134193.324667] USB Serial support registered for pl2303
Oct  8 16:53:16 kg-u35jc kernel: [1134193.324715] pl2303 2-1.2:1.0: pl2303 converter detected
Oct  8 16:53:16 kg-u35jc kernel: [1134193.326704] usb 2-1.2: pl2303 converter now attached to ttyUSB0
Oct  8 16:53:16 kg-u35jc kernel: [1134193.326747] usbcore: registered new interface driver pl2303
Oct  8 16:53:16 kg-u35jc kernel: [1134193.326752] pl2303: Prolific PL2303 USB to serial adaptor driver

What will bst do? The same as before, it hangs. Must try it on a 32-bit machine.

2011-10-07: debugging / faultfinding. Testing the usb-to-serial adapter by connecting pins 2 and 3 in the connector, and then running cu -s 115200 -l ttyUSB0 - characters I type are echoed back, so the adapter is working. IC3 (max232): +9V on pin2, -9V on pins 6, 7 and 14.

2011-10-06: I bought a resistor kit (36-3840) from Clas Ohlson for NOK 49.- today. It doesn't say on the kit, but I'm hoping the values are from the E12 series.

2011-10-03: more soldering today. First the Propeller chip kit (kit 2): Cx (22 µF tantalum, plus up - away from Propeller chip), C13 (0.1 µF), C20 (0.1 µF), C14 (0.1 µF), Q1 (5 Mhz crystal), SV12 (Prop_plug), S1 (reset switch, fits only one way), 8 pins dip socket (for IC1, EEPROM), 40 pins dip socket (for IC6, the Propeller). Not inserting the chips at this time. Next is the keyboard / mouse / TV / VGA kit (kit 5): R5, R7, R9, R11, R12 (5 x 240 R), R6, R8, R10 (3 x 470 R), R19 (1k1), R18 (470R instead of 560R), R17 (220R instead of 270R), TV (TV connector), mini din 6 pins socket x 2 (keyboard, mouse), U$3 (VGA socket). Missing: R3, R4 (100R), R22, R23 (100R), R24, R25 (10k). Means I can't test keyboard and mouse yet. Finally, the external memory kit (kit 6):C11, C3, C16, C12 [0.1 µF), R3 (1k), DIAG (blue LED, short leg is cathode), 16 pin dip socket (for IC4), 3 x 20 pin dip sockets (for IC2, IC13, IC14), 32 pin dip socket (for IC12 - 512k SRAM). I did another PSU test - all ok. Then I put IC's in their sockets. This is it - the board is finished now. I just need to figure out how to test it.

2011-10-01: today I started soldering up the board. First I did the SD socket kit (kit 4). Easy: SD socket, C9 (0.1 µF), C17 (22 µF, tantalum, plus left) and RN1 (10k resistor network, note pin 1). Next the Regulator kit (kit 1): DC socket (had to bend the pins outward so that I could solder them), C19 (470 µF 25V, plus left), R15 (1k), R16 (2k7), D1 and D2 (1N5819, cathode left), C21 and C23 (470 µF 16V, plus left), L1 and L2 (470 µH 1A, had to bend one pin towards the other to make them fit in the holes), 8 pin dip socket for IC7 ("dent" left), 5V (LED, 5mm red, cathode right), LED1 (LED, 5mm green, cathode right) and IC11 (LM2575T, 5V, I bent pin 2 and 4 backwards and made an angle on them to make the regulator fit into holes), finally inserted IC7 (LM2574). Tested with 7V and 19V (cheap psu with changeable output): both the red (5V) and the green (3.3V) LED light up. Good. Serial ports and programmer kit (kit 3): R20 and R21 (10k), R1 and R2 (1k), C1 (0.01 µF ceramic - "103"), C18 (0.1 µF), C18 (22µF tantalum, plus left), socket for IC3 ("dent" left), RN2 (220R, pin 1 left), jumper pins (for mouse /port 2), Q3 (BC557), 2 x green LEDs (cathode right - short leg is cathode), 2 x red LEDs (cathode right), C7, C8, C10 and C6 (1µF, plus left), serial connectors (female and male), and finally, inserted IC3 (MAX232).

2011-09-24: I got a nice surprise in the mail today: a package in the mail: 3mm LEDS (one green, one red), resistors: 1 x 1k, 1 x 2k7 and a few (3) DracBlade v5 boards.

2011-09-12: Downloaded the free version of EAGLE (5.11) and installed it on my Linux laptop (in $HOME/progs/eagle-5.11.0). Verified that I can view the v10 package with EAGLE on Linux. Nice. I inventoried the kits; there are some components missing, but nothing major. Some components have changed, too. The author verified that the changed components will work, and that the missing ones are not critical to the function of the board.

2011-09-09: I got the v10 parts list and the entire EAGLE package for v10 from the author.

2011-09-08: I got the v10 schematic (pdf) from the author.

2011-09-03: the kit(s) arrived. This is for the v10 version.

2011-08-20: I ordered a kit from the author's ordering page. Actually, that was several kits, like this:

kit 1 - regulator kit
kit 2 - Propeller chip kit
kit 3 - serial ports and programmer kit
kit 4 - SD socket kit
kit 5 - keyboard / mouse / TV / VGA kit
kit 6 - external memory kit