My Web Site:
http://www.dougrice.plus.com/ http://ccgi.dougrice.plus.com/ http://www.dougrice.co.uk
My github: https://github.com/doug-h-rice
This page is powered by http://www.usemod.org/cgi-bin/wiki.pl?UseModWiki/Download
Help can be found at http://www.usemod.org/cgi-bin/wiki.pl?TextFormattingRules
Here were a few other thoughts and scribbles. This page contains some random thoughts not fully thought out.
Webpages and JavaScript simulations - using Webpages for simulations.
ADSL Home Hub NAT Sessions - Using an R Pi as a WAP.
AutoType Using an Arduino Leonardo and DigiSpark as a keyboard and type.
AT Commands - Serial Using Web Browser - Cloud based IDE still need to upload firmware to devices. Web Browser support serial devices.
Signalling - After a visit or two to the local heritage railways.
Wet String Theory - essential thoughts and Array of JavaScript Objects
WetString - brainstorm ideas about Peer to Peer
Newer Microcontrollers - Arduino IDE supports many chips
Pic Microcontrollers - I used MPLAB since the PIC16F84 was popular in 1998.
Raspsberry Pi - Super learning Platform
Some of this work is like doing a Jigsaw, putting the bits together and ending up with a picture or successful build, is the motivation.
I used to have a Science of Cambridge MK14 and a NASCOM 2. Here are some notes.
http://81.174.146.201/acorn/Acorn%20System%20Computers/MK14/mk14.html - site with good documentation.
My attempt to get a javaScript version running in a web browser, with lots of cheats:-
http://www.dougrice.plus.com/mk14/seg_mk14.htm
https://github.com/doug-h-rice My git hub has MK14 emulators that used SDL for the screen and keyboard. There is also a java version. Also a PC version that builds using Tiny C.
My second computer was the NASCOM 2. When I brought it the 8K RAM chips could not be sourced, so it came with a dymanic RAM board. I piggy backed a set of RAM chips on top to double the RAM. I had at least 32K RAM.
I also used a second hand 8 inch floppy brought from Display Electronics and WD1771 floppy disk controller chip. It could only read 80% of the tracks, but once you had command to read write multiple sectors, it was better than a tape. The DOS was a bit of Paper. Later on it was on the disk. I added a 6116 2K memory chip and NiCad Battery to save the code.
I bought a Golfball printer. It could be controlled using the PIO chip. It was controlled using a 2 x 7 solenoids and a busy output. These needed 50 volts. I needed a big thick bit of sorbo rubber to stop the vibrations being heard all around the hall of residence! It took 4 minutes to type a page of A4.
Nascom 2 Notes - more notes about Nascom2 and using SDCC
https://peterjensen.github.io/virtual-nascom/virtual-nascom.html - a good JavaScript version but cannot load code I compiled with SDCC.
http://www.dougrice.plus.com/nascom2/JavaScriptNascom2/jsnascom.html - Tommy Thorn wrote a JavaScript version that can load intel hex files from SDCC.
https://github.com/doug-h-rice/virtual-nascom2-dhr
https://github.com/doug-h-rice/virtual-multicomp - Grant Searle's six chip z80 board virtualized.
Run 6502 code in a C program.
http://www.dougrice.plus.com/dev/6502/cpu6502.c
https://github.com/doug-h-rice/virtual-multicomp has virtual6502 with tools.
* cpu6502arduino.c - loads the Enhanced Basic * cpu6502rom.c - loads ROM.HEX from Grant's site, and can be patched to load code compiled with the SDCC small devices c compiler.
Emulator for 6502 CPU running BASIC
Ported by Doug Rice 18/02/2024
Ported from emulator found on Arduino Forum. Modified to run in command box
https://forum.arduino.cc/t/arduino-6502-emulator-basic-interpreter/188328
It does not seem to be using Grant Searle's port of BASIC
Using Basic found at:- http://retro.hansotten.nl/6502-sbc/lee-davison-web-site/enhanced-6502-basic/
https://github.com/Klaus2m5/6502_EhBASIC_V2.22
Modified to run in command box and compiled by Tiny C on Windows 10.
rem ..\tcc.exe cpu6502.c pause
usage:
cpu6502.exe exit
Grant Searle has published some designs for minimal component microprocessor boards that run Microsoft BASIC.
Minimal component Z80,6502,6809 boards are popular. He has an FPGA version.
My Minimal component Z80 emulator system based on Grant's multicomp, now has 6809 and 6502 versions.
https://github.com/doug-h-rice/virtual-multicomp
Grant's website havs spawned many projects
https://github.com/douggilliland
This one is useful. Doug has ported Grants code to many FPGA boards.
It seems to be under a tidy up ( April 2020 )
I remember somebody at the Coventry computer club being enthusiastic about the 6809 in 1979. Here are some notes about getting some assembler code into an FPGA
The emulated CPU communicates with the host using the UART.
This is summarised as a TX and RX register and two flags TxEmpty and RxFull.
Emulated CPU - UART:-
A write to TX resets TxEmpty. A read from RX resets RxFull.
UART - Host:-
A read from TX sets TxEmpty. A write to RX sets RxFull.
If you have a FIFO then there need to be changes.
TxEmpty may need to be TxSpaceAvailable RxFull becomes RxAvailable
I have a JavaScript page that explores this: http://www.dougrice.plus.com/dev/DigiSpark/text0.html
https://github.com/doug-h-rice/virtual-multicomp/blob/master/8kbasic.asm - modified BASIC has this Z80 code.
========================== example Z80 code ========================== GUART: IN A,(UARTS) ; Get UART status RLA ; Any data ready? JP NC,GUART ; No - wait until there is IN A,(UARTD) ; Get data from UART RET UARTOT: OUT (UARTD),A ; Send data to UART URTOLP: IN A,(UARTS) ; Get status ADD A,A ; Byte sent? RET M ; Yes - Return JP URTOLP ; Keep waiting ========================== Port 2 UARTS - 6402 ========================== 7 Data received 6 Transmit buffer empty 5 NC 4 NC 3 Frame error 2 Parity error 1 Overrun error 0 NC ==========================
C code
int putchar( int c ){ while( !(uartStatus & 0x02) ); uartData = ( char ) c; return c; } int getchar( void ){ // wait while( !( uartStatus & 0x01 ) ); return ( int )uartData; }
Some micro controllers have serial ports, and the SBC uses the 68B50 UART/ASCI chip at various addresses.
So putchar() and getchar() need to be written for the device being used.
https://github.com/doug-h-rice/virtual-multicomp/blob/master/bare.c has some examples.
Spencer Owen's Z80 system similar to multicomp. https://rc2014.co.uk/
Small Computer Monitor by Stephen C Cousins ( www.scc.me.uk ) Version 1.0.0 configuration R1 for Z80 based RC2014 systems
https://smallcomputercentral.wordpress.com/small-computer-monitor/small-computer-monitor-v1-0/
Version 1.0.0 configuration R1 for Z80 based RC2014 systems
In passing I found these. Raspberry Pi Bare Metal
https://ultibo.org/ https://ultibo.org/make/
Running CP/M on a Raspberry Pi Bare Metal.
This is good for old models of the PI that are slow with the later RPi builds.
http://www.projekte.daleske.de/prog/11_EMUZ80_RPI/prog_EMUZ80_RPI_en.htm
http://www.dougrice.plus.com/dev/cypress/notes_dhr.txt
http://www.dougrice.plus.com/dev/cypress
http://www.dougrice.plus.com/dev/cypress/i2c.c tries to write to the IIC 24LC128. The link may need moving to enable writing to the ROM.
This chip is uses in the logic analysers available from eBay
They can be used with pulseview: https://sigrok.org/wiki/PulseView and https://sigrok.org/wiki/Main_Page
I was given one of these: https://www.futurlec.com/USBDevBoard.shtml
It has been a challenge to get it to work.
http://www.dougrice.plus.com/dev/AT89C5131/
Getting FLIP to work is troublesome. To put chip into boot mode, use this sequence. press reset, PSEN and release reset when PSEN pressed, then turn on USB switch.
rem rem compile doug_at.c and uses dfu-programmer to program the chip. rem https://sourceforge.net/projects/dfu-programmer/ rem
sdcc -mmcs51 --std-c99 doug_at.c pause
use lsusb to see if in bootmode.
lsusb
You may need to use sudo otherwise you get device not present
sudo dfu-programmer at89c5131 get sudo dfu-programmer at89c5131 erase sudo dfu-programmer at89c5131 flash doug_at.ihx sudo dfu-programmer at89c5131 launch pause
Some Maplin kits used an Atmel Tiny 2313.
It is possible to add it to the Arduino IDE.
http://www.dougrice.plus.com/dev/dhr_avr/ has some pre Arduino tries.
Elector had an Avrdude example using a serial port and resistors.
The COSMAC emulation was fun as well.
See this http://www.donnelly-house.net/programming/cdp1802/simelf/ for a really good emulator.
In the summer of 1977 I studied the COSMAC and have the handbook purchased from Henry's radio.
Until now I have never been able to run any code.
It does not have a subroutine call stack.
The COSMAC ELF website is worth a visit see - http://www.elf-emulation.com
http://www.elf-emulation.com/rcasm.html - see: https://github.com/doug-h-rice/RcAsm
Paul Robson has some 1802 emulators on his github: https://github.com/paulscottrobson?tab=repositories
https://groups.io/g/cosmacelf -
http://www.mccrash-racing.co.uk/philg/ - Phil_G's website
https://github.com/doug-h-rice/RcAsm - Found on http://www.elf-emulation.com/ and it is easy to code new def files.
The UseModWiki Actions, presented so that it's easy to copy to your own site. Each of these is implemented using "Local:" InterWiki interwiki links. (InterWiki links that start with "Local:" always point to the current wiki. See InterWikiDocumentation for more information on InterWiki links.