YaK:: OS9 / NitrOS9 / SDcard MOOH ... 6809 Notes | [Changes] [Calendar] [Search] [Index] [PhotoTags] |
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://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 )
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://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 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 cthat'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 |
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.
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.
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 6809Trying 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 >>> |
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
(last modified 2024-01-14) [Login] |