YaK:: OS9 / NitrOS9 / SDcard MOOH ... 6809 Notes [Changes]   [Calendar]   [Search]   [Index]   [PhotoTags]   
[mega_changes]
[photos]

OS9 / NitrOS9 / SDcard MOOH ... 6809 Notes

#

Test Anything Protocol: https://en.wikipedia.org/wiki/Test_Anything_Protocol

http://luc.devroye.org/fonts-51468.html -- 3x3 Font -- file name: Anders De Flon 3x3 2005

https://opengameart.org/content/tom-thumb-tiny-ascii-font-3x5

https://github.com/hunar4321/particle-life


https://github.com/cavnex/mc6809/blob/master/documentation/6809Details.md

https://electronics.stackexchange.com/questions/651715/is-there-a-program-to-load-a-jed-file-and-show-as-a-schematic

https://github.com/nickbild/picoROM == ROM for ~2MHz 8-bit micro, with overclocked 400MHz RP2040

https://github.com/hoglet67/AtomBusMon/wiki == in-circuit emulator 6809 ~$50

https://www.exaequos.com/ == https://news.ycombinator.com/item?id=37533493 == OS in Browser

https://mcuoneclipse.com/2023/04/02/rp2040-with-pio-and-dma-to-address-ws2812b-leds/ ( 8 bit parallel output )

https://goughlui.com/2022/10/23/quick-review-wiznet-w5100s-evb-pico-w5500-evb-pico-development-boards/

Great Microprocessors of the Past and Present (2003) (cpushack.com) https://www.cpushack.com/CPU/cpu.html

https://github.com/sorenroug/osnine-java/tree/master/os9software => "The purpose of this directory is to preserve or reconstruct as much of the original software as possible on as many platforms as possible. "

https://android.googlesource.com/platform/external/toybox/+/android-6.0.1_r3/toys/posix/

https://github.com/michaelforney/sbase -- sbase - suckless unix tools

https://suckless.org/

https://fuchsia.googlesource.com/?format=HTML

http://www.iro.umontreal.ca/~felipe/IFT2030-Automne2002/Complements/tinyc.c ( Pedagogical TinySubsetOfC compiler, Copyright (C) 2001 by Marc Feeley ) ... /* author writes on Hacker News: Just for context tinyc.c was created in 2000 (I found the file in my archives and the last modification date is January 12, 2001). I was not aware at the time of Fabrice Bellard's work which after all won the IOCCC in 2001, so the confusion with TCC was not intentional. My tinyc.c was meant to teach the basics of compilers in a relatively accessible way, from parsing to AST to code generation to bytecode interpreter. And yes it is the subset of C that is tiny, not a tiny compiler for the full C language. https://news.ycombinator.com/item?id=35133708 */

Tiny PHysics Engine (drummyfish): https://codeberg.org/drummyfish/tinyphysicsengine/src/branch/master

(@ https://news.ycombinator.com/item?id=33181029 -- https://news.ycombinator.com/item?id=33181685

merlincorey> This is brilliant work and I think their soft-body model is pretty simple and understandable why it "works":

The basic principles in short: TPE uses soft body physics, bodies are modelled as spheres connected by springs but the springs can be made stiff so that the bodies behave almost like rigid bodies, so you can simulate (fake) both soft and rigid physics. Environment in which bodies are placed is modelled by distance functions, i.e. you can in theory create any environment as long as you can create a function that for any point in space returns the closest point to the environment (functions for basic and some more complex shapes are included in TPE).

meheleventyone> You’ll love this then, using a similar mass-spring approach to model vehicle dynamics in a PS1 game: https://youtu.be/pwbwFdWBkU0 There’s a bunch of similar stuff with varying degrees of physical accuracy under Position Based Dynamics and the more physically correct eXtended Position Based dynamics. It’s a fun approach.

@)

https://gitlab.com/drummyfish/raycastlib

https://drummyfish.gitlab.io/anarch/

https://codeberg.org/drummyfish/SAF

https://sinclair.wiki.zxnet.co.uk/wiki/FZX_format ( https://github.com/z88dk/z88dk/blob/0cb51ee64b02bfc08645026dd141f671c0de6dc9/libsrc/_DEVELOPMENT/font/fzx/README.md )

https://arduinodiy.wordpress.com/2017/04/12/the-w5100-bug/ The W5100 BUG (little red shields)

https://docs.rs-online.com/0c2a/0900766b80e8098e.pdf

http://www.gammon.com.au/forum/?id=10892&reply=6#reply6

KB: """Seems the three places people go for boards are pcbway, jlcpcb, and oshpark. I don't know if anyone's precisely described when you would use each. My understanding was that oshpark is cheap (presuming that you can use three) but slower than the others by a fair bit. Beyond that, pcbway vs. jlcpcb seems to be up to people's preferences from what I can tell. If one's objectively better in certain circumstances, nobody's made an argument for it."""

Deek: Where'd you get the code from?
[10:14 PM] MasterS3263827: Mine comes from mitros9-v3.3.0.tar.gz
[10:14 PM] Deek: Ahh, so a hundred years ago.
[10:14 PM] Deek: (not literally)
[10:15 PM] MasterS3263827: Must be - what is the current ver
[10:15 PM] Deek: hg
[10:15 PM] Deek: http://hg.code.sf.net/p/nitros9/code
[10:17 PM] Deek: 3.3.0 was in 2014.

https://subethasoftware.com/2016/05/12/creating-a-raspberrypi-drivewire-server/

https://gitlab.com/mooh-board/multi-rom

https://github.com/nothings/stb/blob/master/stb_ds.h This is a single-header-file library that provides easy-to-use dynamic arrays and hash tables for C (also works in C++). For a gentle introduction: http://nothings.org/stb_ds

https://hackaday.io/project/7366-coco-3-rgb-to-scart-to-hdmi-cable

CoCoIO Network cards: https://computerconect.com/ => https://computerconect.com/products/cocoio-network-only-developers-edition => https://docs.wiznet.io/img/products/w5100s/w5100s_ds_v126e.pdf TEST httpx://drive.google.com/corp/drive/folders/1h1LBVB2m-scQsk751tAnixlZzu2jyACo

strick: For the W5100 Arduino Shield that I got, I've found this documentation, which confirms it's SPI only and tells how to wire it up: https://www.espruino.com/arduino-w5100

http://wizwiki.net/wiki/lib/exe/fetch.php/osh:w5100s_ethernet_shield:start:w5100s_ethernet_shield_ds_v100e.pdf

Mini NANO W5100 R3 Ethernet Network LAN POE/Xbee/SD Slot for ATMega... Mini W5100. W5100 Shield. This Arduino Ethernet Shield which is based on the Wiznet W5100 Ethernet Chip gives you an easy way to get your Arduino Online. The Wiznet W5100 provides a network (IP) stack capable of both TCP and UDP. It says it can do all three "direct bus, indirect bus and the SPI bus." https://www.ebay.com/itm/222675120663

The CART* signal: See FF23, bit 0 and 1.

Option 3: You can stack a 6309 on top of your computer’s existing 6809. Here’s how… https://retrocomputing.stackexchange.com/questions/188/what-are-the-options-for-installing-a-6309-in-a-trs-80-tandy-color-computer

https://datatracker.ietf.org/doc/html/rfc3526 Diffee-Hellman standard MODP groups

Deek:
tmode .1 eko=1
display 5 21 1b 24 c
that's one of them [6:41 PM] Deek:
PROCEDURE clear
RUN Gfx2("DWEnd")
RUN Gfx2("DWSet",2,0,0,80,25,0,2,2)
RUN Gfx2("Palette",0,63)
RUN Gfx2("Palette",1,9)
RUN Gfx2("Palette",2,0)
RUN Gfx2("Palette",3,18)
RUN Gfx2("Palette",4,36)
RUN Gfx2("Palette",5,54)
RUN Gfx2("Palette",6,45)
RUN Gfx2("Palette",7,27)
RUN Gfx2("Palette",8,63)
RUN Gfx2("Palette",9,9)
RUN Gfx2("Palette",10,0)
RUN Gfx2("Palette",11,18)
RUN Gfx2("Palette",12,36)
RUN Gfx2("Palette",13,54)
RUN Gfx2("Palette",14,45)
RUN Gfx2("Palette",15,27)
RUN Gfx2("Color",0,2,2)
RUN Gfx2("CurOn")
RUN Gfx2("Select")
END
is another.

Option 3: You can stack a 6309 on top of your computer’s existing 6809. Here’s how…

Cut pin 39 (TSC) of the 6809, leaving a small piece sticking out of the processor so you can solder to it.

Take a 40 pin IC socket. Cut off pins 5, 6, 33, 36, and 38. Bend out pin 39 so you can solder to it.

Stack the 40-pin IC socket on top of the 6809. Solder all of the corresponding pins together. DO NOT solder the pins 39 together.

Now you have two additional options:

1) Solder a wire from 6809 pin 39 to +5V, and another wire from socket pin 39 to ground.

2) Solder a 4.7K resistor between each pin 39 and +5V. Then take a SPDT switch, connect the common contact to ground, and connect each end to a separate pin 39.

In either case, finish up by plugging the 6309 into the socket. If you picked option 1, you now have a 6309 system. If you picked option 2, your system is now switchable between the 6809 and the 6309 (before power-up – not while running!).

https://store.go4retro.com/tandy/dual-6x09-interface/

http://www.go4retro.com/products/23xx-adapter/

Generating E and Q with two JK flip flops: https://retrocomputing.stackexchange.com/questions/16543/are-the-6809-and-6809e-different-from-a-programmers-point-of-view

boysontech Boomerang 512k Install

( archived from https://boyson.tech/coco3-512k/ )

Remove the six screws from the bottom of the CoCo3 case.

Remove the four RAM chips IC16, IC17, IC18, and IC19.

Cut or clip out capacitors C65 can C66. Capacitor C65 is located at the bottom of the RAM area next to IC17. Capacitor C66 is located at the top of the RAM area at IC18.

Install Boomerang 512K Classic board along the connectors at the RAM area.

Testing the Classic 512K Memory Board

Any 512K memory board test should work, however, we recommend CoCo3 RAM Stress disk. The source can be found here:

https://github.com/richard42/cocostress

Email support@boysontech.com if you like a working compiled copy.

Installation of E2 Board (2MB)

( archived from https://boyson.tech/boomerang/ )

Remove the six screws from the bottom of the CoCo3 case.

Remove the four RAM chips IC16, IC17, IC18, and IC19.

Cut or clip out capacitors  C65 can C66. Capacitor C65 is located at the bottom of the RAM area next to IC17. Capacitor C66 is located at the top of the RAM area at IC18.

Install Boomerang E2 board along the connectors at the RAM area.

Installation CPU DAT board

This requires the un-soldering and replacement of the 6809 CPU. It is highly recommended that it should be done by a someone with solder skills.

Clip out and remove IC1 (Motorola 6809).
Un-solder the remaining pins and install (solder) the 40 pin machine socket.

Install a new Hitachi 6309 or 6809 CPU in the 40 pin socket on the Guardian+ board.

Install the CPU Guardian+ board into the IC1 area (in the new installed 40 pin socket).

Locate the 2 pin wire included in kit. Plug one end marked BANK on the CPU Guardian+ board.

Install the other end of wire to the 2 pin connector on the E2 Memory Board.

NOTE: The polarity on the wire does not matter. These are address lines and color/polarity does not matter.

Turn on CoCo3. It should boot up with the regular CoCo3 basic screen

Level1 Boot Track contains modules

https://github.com/strickyak/doing_os9

Name: <REL> at offset 0x6 == 6.
Size: 0x75 == 117.
Type: 12.
Lang: 1.
Attr: 8.
Revn: 5.

Name: <Krn> at offset 0x7b == 123.
Size: 0x80b == 2059.
Type: 12.
Lang: 1.
Attr: 8.
Revn: 1.

Name: <KrnP2> at offset 0x894 == 2196.
Size: 0x50e == 1294.
Type: 12.
Lang: 1.
Attr: 8.
Revn: 0.

Name: <Init> at offset 0xda2 == 3490.
Size: 0x76 == 118.
Type: 12.
Lang: 0.
Attr: 8.
Revn: 0.

Name: <Boot> at offset 0xe18 == 3608.
Size: 0x1ad == 429.
Type: 12.
Lang: 1.
Attr: 8.
Revn: 0.

Level1 OS9Boot contains

Name: <IOMan> at offset 0x0 == 0.
Name: <RBF> at offset 0x70a == 1802.
Name: <rb1773> at offset 0x14ef == 5359.
Name: <D0> at offset 0x19f8 == 6648.
Name: <D1> at offset 0x1a27 == 6695.
Name: <D2> at offset 0x1a56 == 6742.
Name: <DD> at offset 0x1a85 == 6789.
Name: <SCF> at offset 0x1ab4 == 6836.
Name: <VTIO> at offset 0x1f9e == 8094.
Name: <CoVDG> at offset 0x27fa == 10234.
Name: <TERM> at offset 0x2abc == 10940.
Name: <scbbp> at offset 0x2af8 == 11000.
Name: <p> at offset 0x2cb4 == 11444.
Name: <scbbt> at offset 0x2cee == 11502.
Name: <T1> at offset 0x2e78 == 11896.
Name: <PipeMan> at offset 0x2eb3 == 11955.
Name: <Piper> at offset 0x30f1 == 12529.
Name: <Pipe> at offset 0x3119 == 12569.
Name: <Clock> at offset 0x313f == 12607.
Name: <Clock2> at offset 0x32b4 == 12980.
Name: <SysGo> at offset 0x331a == 13082.

SDcard on the MOOH

In particular, using image `sdcard-co42.img` from `sdcard.img_mooh_dualboot-20190428-co42.zip` ( from https://nitros9.sourceforge.io/mooh/ or archive at http://wiki.yak.net/1087 )

The NitrOS/9 boot image does start at 0x8000 ( bigsector 64 ) [ where bigsector is 512-byte sectors ]

$ hd sdcard-co42.img
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  00 00 00 00 00 00 00 00  7b 8a 5c 4f 00 00 00 82  |........{.\O....|
000001c0  03 00 83 96 11 04 00 20  00 00 ff ff 00 00 00 00  |....... ........|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00008000  00 12 00 26 00 4f 53 20  2d 12 05 87 cd 01 2a 00  |...&.OS -.....*.|
00008010  0d c1 85 d7 00 2b 00 00  52 45 cc 05 6c 00 00 00  |.....+..RE..l...|
00008020  09 00 00 00 03 34 3f 00  00 ec 01 00 86 2a 9d 5e  |.....4?......*.^|
00008030  1f 98 9d 5e 5f 8c c6 ff  fe 80 fd 1f 9b 86 3d 97  |...^_.........=.|
00008040  a7 86 40 97 90 97 c6 97  c8 97 cb 97 cd 97 cf 1a  |..@.............|
00008050  50 7f ff 03 4f 1f 8b 0f  71 7f ff a0 10 ce 1f ff  |P...O...q.......|
00008060  e7 e2 27 0b 5f 1f 01 a7  80 5c 26 fb df 18 5f 31  |..'._....\&..._1|
00008070  8c aa 8e 00 90 4a ee a1  ef 8b ef 81 8e 38 20 9f  |.....J.......8 .|
00008080  04 30 88 e0 10 8e 02 00  c6 20 e7 80 31 3f 26 fa  |.0....... ..1?&.|
00008090  33 8c 1e 8d 0b e6 e0 26  30 8d 05 7f ff 40 20 fe  |3......&0....@ .|
000080a0  10 ae c1 4f e6 c0 1f 01  a6 c0 a7 a0 30 1f 26 f8  |...O........0.&.|
000080b0  39 38 08 0c 4e 49 54 52  4f 53 39 20 42 4f 4f 54  |98..NITROS9 BOOT|
000080c0  38 15 06 46 41 49 4c 45  44 1f 50 81 26 26 39 ce  |8..FAILED.P.&&9.|

and the NitrOS/9 Disk Image does start at 0x40000 ( bigsector 512 )

...
*
00040000  00 3b c4 12 07 79 00 01  00 00 09 00 00 ff 01 80  |.;...y..........|
00040010  02 00 12 00 00 00 00 13  53 79 76 08 13 01 02 4e  |........Syv....N|
00040020  69 74 72 4f 53 2d 39 2f  36 38 30 39 20 4c 65 76  |itrOS-9/6809 Lev|
00040030  65 6c 20 b2 00 00 00 00  00 00 00 00 00 00 00 01  |el .............|
00040040  01 00 20 01 03 52 01 00  00 12 00 12 03 08 00 00  |.. ..R..........|
00040050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00040060  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00040070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00040100  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00040250  ff ff c0 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00040260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00040870  00 00 00 00 00 00 00 00  0f ff ff ff ff ff ff ff  |................|
00040880  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00040900  bf 00 00 76 08 13 01 02  01 00 00 01 40 76 08 13  |...v........@v..|

Extracting the filesystem:

$ dd if=/home/strick/Downloads/mooh/sdcard.img_mooh_dualboot-20190428-co42/sdcard-co42.img of=/tmp/co42.vhd bs=512 skip=512
73215+0 records in
73215+0 records out
37486080 bytes (37 MB, 36 MiB) copied, 0.240352 s, 156 MB/s

$ go run grok_os9_disk/grok_os9_disk.go /tmp/explode-co42 < /tmp/co42.vhd > /tmp/manifest-co42 2>&1

$ less /tmp/manifest-co42
=== SECTOR ZERO ===

DD.TOT: 00 3b c4        [3] "Total number of sectors" :: 15300
DD.TKS: 12      [1] "Track size in sectors" :: 18
DD.MAP: 07 79           [2] "Number of bytes in allocation bit map" :: 1913
DD.BIT: 00 01           [2] "Number of sectors/bit" :: 1
DD.DIR: 00 00 09        [3] "Address of root directory fd" :: 9
DD.OWN: 00 00           [2] "Owner" :: 0
DD.ATT: ff      [1] "Attributes" :: 255
DD.DSK: 01 80           [2] "Disk ID" :: 384
DD.FMT: 02      [1] "Disk format; density/sides" :: 2
DD.SPT: 00 12           [2] "Sectors/track" :: 18
DD.RES: 00 00           [2] "Reserved for future use" :: 0
DD.SIZ:         [0] "Device descriptor minimum size" :: @21
DD.BT:  00 00 13        [3] "System bootstrap sector" :: 19
DD.BSZ: 53 79           [2] "Size of system bootstrap" :: 21369
DD.DAT: 76 08 13 01 02          [5] "Creation date" :: 2018-08-19 01:02
DD.NAM: 4e 69 74 72 4f 53 2d 39 2f 36 38 30 39 20 4c 65 76 65 6c 20 b2 00 00 00 00 00 00 00 00 00 00 00         [32] "Volume name" :: "NitrOS-9/6809 Level 2"
DD.OPT: 01 01 00 20 01 03 52 01 00 00 12 00 12 03 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         [32] "Option area" :: --

========= INODE #9 "/" =========

FD.ATT: bf      [1] "Attributes" :: (d-iXWRxwr)
FD.OWN: 00 00           [2] "Owner" :: 0
FD.DAT: 76 08 13 01 02          [5] "Date last modified" :: 2018-08-19 01:02
FD.LNK: 01      [1] "Link count" :: 1
FD.SIZ: 00 00 01 40     [4] "File size" :: 320
FD.Creat:       76 08 13        [3] "File creation date (YY/MM/DD)" :: 2018-08-19
FD.SEG:         [0] "Beginning of segment list" :: @16


=== Segment 0 ===
FDSL.A: 00 00 0a        [3] "Segment beginning physical sector number" :: 10
FDSL.B: 00 08           [2] "Segment size" :: 8

=== Directory Segment at 10 segs 8 (inode 9 path "/") ===
DIR.NM: 2e ae 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00          [29] "Fi
le name" :: ".."
DIR.FD: 00 00 09        [3] "File descriptor physical sector number" :: 9
DIR.SZ:         [0] "Directory record size" :: @32
DIR.NM: ae 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00          [29] "Fi
le name" :: "."
DIR.FD: 00 00 09        [3] "File descriptor physical sector number" :: 9
DIR.SZ:         [0] "Directory record size" :: @32
DIR.NM: 4f 53 39 42 6f 6f f4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00          [29] "Fi
le name" :: "OS9Boot"
DIR.FD: 00 00 12        [3] "File descriptor physical sector number" :: 18
DIR.SZ:         [0] "Directory record size" :: @32
DIR.NM: 43 4d 44 d3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00          [29] "File name" :: "CMDS"
DIR.FD: 00 00 67        [3] "File descriptor physical sector number" :: 103
DIR.SZ:         [0] "Directory record size" :: @32
DIR.NM: 53 59 d3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00          [29] "File name" :: "SYS"
DIR.FD: 00 00 70        [3] "File descriptor physical sector number" :: 112
DIR.SZ:         [0] "Directory record size" :: @32
DIR.NM: 44 45 46 d3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00          [29] "File name" :: "DEFS"
DIR.FD: 00 00 79        [3] "File descriptor physical sector number" :: 121
DIR.SZ:         [0] "Directory record size" :: @32

.....

$ ls -R /tmp/explode-co42
/tmp/explode-co42:
ccbkrn  CMDS  DEFS  NITROS9  OS9Boot  startup  SYS  sysgo

/tmp/explode-co42/CMDS:
asm      cmp      debug   dir      dsave  exbin   help   irqs    mdir      modpatch  procs   runb      smap     tsmon     xmode
attr     cobbler  ded     dirsort  dump   format  httpd  link    megaread  montype   prompt  save      syscall  tuneport
backup   copy     deiniz  disasm   dw     free    ident  list    merge     mpi       pwd     setime    tee      unlink
basic09  cputype  del     display  echo   gfx     inetd  load    mfree     os9gen    pxd     shell     telnet   utilpak1
binex    date     deldir  dmem     edit   gfx2    iniz   login   minted    padrom    reboot  shell_21  tmode    verify
build    dcheck   devs    dmode    error  grfdrv  inkey  makdir  mmap      park      rename  sleep     touch    wcreate

/tmp/explode-co42/DEFS:
coco1vtio.d  cocovtio.d  Defsfile  mooh.d  os9.d  rbf.d  scf.d

/tmp/explode-co42/NITROS9:
6809L2

/tmp/explode-co42/NITROS9/6809L2:
BOOTLISTS  CMDS  MODULES  SCRIPTS

/tmp/explode-co42/NITROS9/6809L2/BOOTLISTS:
dw.bl  standard.bl

/tmp/explode-co42/NITROS9/6809L2/CMDS:
del  echo  format  grfdrv  makdir  merge  os9gen  prompt  shell  tmode

/tmp/explode-co42/NITROS9/6809L2/MODULES:
BOOTTRACK  CLOCKS  KERNEL  PIPE  RBF  SCF  SYSMODS

/tmp/explode-co42/NITROS9/6809L2/MODULES/BOOTTRACK:
boot_1773_30ms  boot_burke  boot_dw_arduino  boot_rampak  boot_tc3     rel_32       rel_40_50hz
boot_1773_6ms   boot_dide   boot_dw_becker   boot_rom     boot_wd1002  rel_32_50hz  rel_80
boot_65spi      boot_dw     boot_ide         boot_sdc     krn          rel_40       rel_80_50hz

/tmp/explode-co42/NITROS9/6809L2/MODULES/CLOCKS:
clock2_bnb     clock2_coco3fpga  clock2_disto4  clock2_elim    clock2_jvemu    clock2_smart  clock_50hz
clock2_cloud9  clock2_disto2     clock2_dw      clock2_harris  clock2_messemu  clock2_soft   clock_60hz

/tmp/explode-co42/NITROS9/6809L2/MODULES/KERNEL:
ccbkrn  krnp2  krnp3_perr  krnp4_regdump

/tmp/explode-co42/NITROS9/6809L2/MODULES/PIPE:
pipe.dd  pipeman.mn  pipeman_named.mn  piper.dr

/tmp/explode-co42/NITROS9/6809L2/MODULES/RBF:
d0_35s.dd  d2_80d.dd     ddr0_8k.dd        dwio.sb         lltc3.dr    r0_ramd_coco3fpga.dd  rbsuper.dr  sd0_cocosdc.dd    x3.dd
d0_40d.dd  d3_35s.dd     ddr0_96k.dd       i0_ide.dd       md.dd       ramd_coco3fpga.dr     s0_tc3.dd   sd0_sd65spi.dd
d0_80d.dd  ddd0_35s.dd   dds0_tc3.dd       i1_ide.dd       mr0.dd      rammer.dr             s1_tc3.dd   sd1_coco3fpga.dd
d1_35s.dd  ddd0_40d.dd   ddsd0_cocosdc.dd  ih_ide.dd       myram.dr    rb1773.dr             s2_tc3.dd   sd1_cocosdc.dd
d1_40d.dd  ddd0_80d.dd   ddsd0_sd65spi.dd  llcoco3fpga.dr  r0_128k.dd  rb1773_scii_ff58.dr   s3_tc3.dd   sh_tc3.dd
d1_80d.dd  ddi0_ide.dd   ddx0.dd           llcocosdc.dr    r0_192k.dd  rb1773_scii_ff74.dr   s4_tc3.dd   x0.dd
d2_35s.dd  ddr0_128k.dd  dwio_arduino.sb   llide.dr        r0_8k.dd    rbdw.dr               s5_tc3.dd   x1.dd
d2_40d.dd  ddr0_192k.dd  dwio_becker.sb    llsd65spi.dr    r0_96k.dd   rbf.mn                s6_tc3.dd   x2.dd

/tmp/explode-co42/NITROS9/6809L2/MODULES/SCF:
co42.io          joydrv_6551M.sb  n13_scdwv.dd  n_scdwv.dd     ssp.dd          term_vga.dt      vi.dd         w2.dw        z3_scdwv.dd
co80.io          joydrv_6552L.sb  n1_scdwv.dd   p_scbbp.dd     t1_scbbt.dd     term_win40.dt    vrn.dr        w3.dw        z4_scdwv.dd
cogrf.io         joydrv_6552M.sb  n2_scdwv.dd   p_scdwp.dd     t2_sc6551.dd    term_win80.dt    vtio1.dr      w4.dw        z5_scdwv.dd
cohr.io          joydrv_joy.sb    n3_scdwv.dd   sc6551.dr      t3_sc6551.dd    term_wprs.dt     vtio1_vga.dr  w5.dw        z6_scdwv.dd
covdg.io         keydrv_cc1.sb    n4_scdwv.dd   scbbp.dr       term_42.dt      term_z_scdwv.dt  vtio.dr       w6.dw        z7_scdwv.dd
covdg_small.io   keydrv_cc3.sb    n5_scdwv.dd   scbbt.dr       term_80.dt      v2.dw            w10.dw        w7.dw
covga.io         keydrv_dgn.sb    n6_scdwv.dd   scdwp.dr       term_hr.dt      v3.dw            w11.dw        w8.dw
cowin.io         midi_scdwv.dd    n7_scdwv.dd   scdwv.dr       term_sc6551.dt  v4.dw            w12.dw        w9.dw
cowprs.io        n10_scdwv.dd     n8_scdwv.dd   scf.mn         term_scbbt.dt   v5.dw            w13.dw        w.dw
ftdd.dd          n11_scdwv.dd     n9_scdwv.dd   snddrv_cc3.sb  term_scdwv.dt   v6.dw            w14.dw        z1_scdwv.dd
joydrv_6551L.sb  n12_scdwv.dd     nil.dd        sspak.dr       term_vdg.dt     v7.dw            w1.dw         z2_scdwv.dd

/tmp/explode-co42/NITROS9/6809L2/MODULES/SYSMODS:
init  ioman  rominfo  sysgo_bd  sysgo_dd  sysgo_h0  sysgo_rom  vectors

/tmp/explode-co42/NITROS9/6809L2/SCRIPTS:
mb.dw  mb.floppy

/tmp/explode-co42/SYS:
errmsg  helpmsg  ibmedcfont  inetd.conf  isolatin1font  motd  password  stdfonts  stdpats_16  stdpats_2  stdpats_4  stdptrs
$

Investigating Big Int for 6809

Trying https://www.libtom.net/ LibTomMath v1.2.0. It has MP_8BIT support, but it promises to remove it in the next version.

I can make with make CC='gcc -DMP_8BIT=1'

I can link with gcc -DMP_8BIT=1 -I. a.c -L libtommath-1.2.0 -l tommath

Here is my test code a.c:

$ cat a.c
#include "libtommath-1.2.0/tommath.h"

#define EXIT_FAILURE 13
#define EXIT_SUCCESS 0

int main(void) {
  mp_int num1, num2, num3;
  int result;
  if ((result = mp_init_multi(&num1, &num2, &num3, NULL)) != MP_OKAY) {
    printf("Error initializing the numbers. %s", mp_error_to_string(result));
    return EXIT_FAILURE;
  }
  /* use the numbers */
  /* We’re done with them. */
  mp_clear_multi(&num1, &num2, &num3, NULL);

  // mp_err mp_exptmod(const mp_int *G, const mp_int *X, const mp_int *P, mp_int *Y)
  mp_exptmod(&num1, &num2, &num3, &num3);

  return EXIT_SUCCESS;
}
Before adding the mp_exptmod() call, a.out was 16616 bytes (on X86_64 Linux, using `-DMP_8BIT=1`). Afterwards, a.out was 71152 bytes. I haven't tried anything on 6809 yet.

Now here's a program that actually calculates correctly in 8BIT mode,

and we check it in python:

strick@strick-glaptop:/tmp/ltm$ ./a.out
64910880
strick@strick-glaptop:/tmp/ltm$ cat a.c
#include "libtommath-1.2.0/tommath.h"

#define EXIT_FAILURE 13
#define EXIT_SUCCESS 0

int main(void) {
  char buf[100];
  mp_int a, b, c, d;
  int result;
  if ((result = mp_init_multi(&a, &b, &c, &d, NULL)) != MP_OKAY) {
    printf("Error initializing the numbers. %s", mp_error_to_string(result));
    return EXIT_FAILURE;
  }

  mp_set_l(&a, 9L);
  mp_set_l(&b, 100L);
  mp_set_l(&c, 123456789L);
  mp_set_l(&d, 0L);
  mp_exptmod(&a, &b, &c, &d);

  size_t written;
  mp_to_radix(&d, buf, sizeof buf, &written, 10/*radix*/);
  printf("%s\n", buf);

  /* use the numbers */
  /* We’re done with them. */
  mp_clear_multi(&a, &b, &c, &d, NULL);

  return EXIT_SUCCESS;
}
strick@strick-glaptop:/tmp/ltm$ python
++ exec python2
Python 2.7.18 (default, Sep 24 2021, 09:39:51)
[GCC 10.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> ( 9 ** 100 ) % 123456789
64910880L
>>>

OTHER TOOLS

https://sourcegraph.com/blog/ex-googler-guide-dev-tools An ex-Googler's guide to dev tools Beyang Liu November 24, 2020

Learn CSS (google, free) https://web.dev/learn/css

  • ltm-1.2.0.zip
  • tinyc.c
  • krn.diff.txt
  • demo-boot-NOS9_6809_L2_v030300_coco3_80d-OS9-calls.txt
  • another-full-bootup-with-NOS9_6809_L2_v030300_coco3_80d.800MB.txt.bz2
  • (unless otherwise marked) Copyright 2002-2014 YakPeople. All rights reserved.
    (last modified 2024-01-14)       [Login]
    (No back references.)