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