Forth for the Membership Card
Intro
Computers are machines just like the marionette. They must be told exactly what to do, in specific language. And so we need a language which possesses two seemingly opposite traits: On the one hand, it must be precise in its meaning to the computer, conveying all the information that the computer needs to know to perform the operation. On the other hand, it must be simple and easy-to-use by the programmer.

From chapter "Introduction for Beginners", Leo Brodie, Starting FORTH https://www.forth.com/starting-forth/

rcforth and IDIOT Monitor for RaspiElf (Membership Card)

Mark Abene made FORTH work on the Membership Card.

forth.hex
Modified version of Mike Riley's rcforth, ROM version. Changed to work with my modified version of IDIOT. Loads in at 0500h. You can get it from the COSMAC ELF yahoo group.
idiot_new.hex
New version of IDIOT with SCRT routines, along with TYPE, MSG, READ, and INPUT routines for basic console I/O. Loads in at 0000h. You can get it from the COSMAC ELF yahoo group

I concatenated this two files as mc-forth.hex and converted to a binary file:

pi@cosmac:~/elf/forth $ cat idiot_new_qhi.hex forth.hex > mc-forth.hex
pi@cosmac:~/elf/forth $ hex2bin mc-forth.hex 
hex2bin v2.5, Copyright (C) 2017 Jacques Pelletier & contributors

Allocate_Memory_and_Rewind:
Lowest address:   00000000
Highest address:  00001633
Starting address: 00000000
Max Length:       5684

Binary file start = 00000000
Records start     = 00000000
Highest address   = 00001633
Pad Byte          = FF
pi@cosmac:~/elf/forth $ ls -l
insgesamt 40
-rw-r--r-- 1 pi pi 12132 Jan 13 12:36 forth.hex
-rw-r--r-- 1 pi pi  2890 Jan 13 12:36 idiot_new.hex
-rw-r--r-- 1 pi pi  5684 Jan 13 12:41 mc-forth.bin
-rw-r--r-- 1 pi pi 15022 Jan 13 12:36 mc-forth.hex

Now upload and start mc-forth:

pi@cosmac:~/elf/RaspiElf/chase $ bin2elf -w -r mc-forth.bin
0x1634 bytes written

and start the terminal emulator (console):

pi@cosmac:~/elf/RaspiElf/chase $ microcom -s 2400
The Q/EF3 LED is orange, that means EF3 is inverted.

Mass storage

Serial Communication by Input/Output Ports (switches and LEDs)

Another solution could be to use part of the Membership Card's input/output ports (Switches/LEDs). e.g. Serial Peripheral Interface, MSC is the SPI master, the host is the slave:

CLK   MSC ->- host
MOSI  MSC ->- host
MISO  MSC -<- host
SS    MSC ->- host or other peripherals (optional)

You loose two LEDs and one switch.

Serial EEPROM

e.g. AT25M02 SPI EEPROM 2Mbit (256 KiB)

Raspberry emulating SPI EEPROM

On RaspiElf switches/LEDs are already connected to Raspi's GPIOs. No need for additional hardware.

Kermit/ZModem

What about using KERMIT or ZMODEM protocol for the file transfer and use the file system on the host? No need to add additional hardware (SD-card is anyway to modern wink You could use an old CP/M or even a PDP11 as host.

https://github.com/utoh/pygmy-forth/blob/master/extras/kermit/pfkerm.doc

Spare Time Gizmo’s ELF2K ROM for RaspiElf

http://www.retrotechnology.com/memship/elf2k_mship.html

pi@cosmac:~/elf/elf2k $ cp v88.hex v88.hex.org
pi@cosmac:~/elf/elf2k $ patch v88.hex v88-mc.patch
pi@cosmac:~/elf/elf2k $ hex2bin v88.hex
hex2bin v2.5, Copyright (C) 2017 Jacques Pelletier & contributors

Allocate_Memory_and_Rewind:
Lowest address:   00000000
Highest address:  00007FFF
Starting address: 00000000
Max Length:       32768

Binary file start = 00000000
Records start     = 00000000
Highest address   = 00007FFF
Pad Byte          = FF
pi@cosmac:~/elf/elf2k $ bin2elf -s 8000 v88.bin 
0x8000 bytes written
pi@cosmac:~/elf/elf2k $ bin2elf -w -r LBR_8000.bin
0x0003 bytes written
pi@cosmac:~/elf/elf2k $ 
But there is "Post Code 97" -> EPROM checksum wrong

-- Peter Schmid - 2019-01-13

Comments

Topic attachments
I Attachment History Action Size Date Who Comment
Unknown file formatpatch v88-msc.patch r1 manage 0.5 K 2019-01-13 - 14:53 PeterSchmid  
Edit | Attach | Watch | Print version | History: r25 | r5 < r4 < r3 < r2 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r3 - 2019-01-13 - PeterSchmid
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback