writing.exchange is one of the many independent Mastodon servers you can use to participate in the fediverse.
A small, intentional community for poets, authors, and every kind of writer.

Administered by:

Server stats:

335
active users

#z80

3 posts3 participants0 posts today

Planning a better version of extra RAM for the #RC2014 (a #Z80 computer). Reserves I/O ports 0-3. How to use:
1. write high byte of address to port 0
2. write low byte of address to port 1
3. read or write port 2 to access the memory byte at that address

Parts: 6 diodes, 10k resistor, 100nF capacitor, 74138, 2 * 74273, RAM chip (at least 64k*8 bits; 628128 shown).

The order of the RAM address lines does not matter. Neither does the order of the data lines.

See rc2014.co.uk/1504/peripheral-a for the address decoding used.

My old extra RAM circuit: tech.lgbt/@0x10f/1116410693699

This morning I've added more products to my new "quickshop" page to make ordering in the UK easier a lot more convenient.

samcoupe.com/quickshop.htm

Buy It Now buttons added for the range of hardware I've designed and released for use with #RC2014 and compatibles (such as #ZXSpectrum and #SAMCoupe via my bus interfaces, MicroBeast, Minstrel 4D, systems with RC2014 / RCbus expansion ports)

Released in June 2020:
SID SOUNDCHIP Interface
- Use the famous #C64 soundchip with your #Z80 system. Also works with ARMSID and SwinSID. Includes 50/60/100Hz interrupt generator.

Released in July 2020:
GRAPHIC OLED Interface
- Add a 128 x 32 OLED module to your project.

Released in September 2021:
ZX TRUE TONE (ZXTT)
- 1.7734MHz Clock oscillator for use with Ed Brindley's YM/AY Soundcard.

Also available on my Tindie and eBay stores - see profile. Plus much more information on: 2014.samcoupe.com

Replied in thread

@cas : slow?

Mwah, after asm hacking (6510) I learned Pascal with an "editor", compiler and linker loaded from multiple cassette tapes (one at a time) on my Commodore 64 (more than 40 years ago).

Later I learned 68HC11 asm which was a nice CPU too, slightly better than 6502 (or 6510). Of course the 68000 was a giant step (considering Zilog Z80 and Intel 8080 via 8086 to 80286 CPU's).

Nice to see that there are still people who love to hack low level stuff. The world will keep needing those who understand "basic" building blocks!

@never_released

#6502CPU#C64#68HC11

I still cannot understand why the #S100 bus based computers were not a great success in the early 1980s.

It was used for the first hobbyist #Altair computers as well as #Z80 CPU based systems.

The extensibility through standardized components was one of the key features. There were backplanes, cases and exchangeable 3rd party components available.

But people preferred proprietary stuff like #Apple II and #Commodore pet and later #VC20 and #C64.

en.wikipedia.org/wiki/S-100_bu

If you are into #z80 programming or #retrocomputing and are looking for a better Z80 disassembler, I'm announcing my z80 smart disassembler.

It's available at github.com/cormacj/z80-smart-d

I wrote this because just about every disassembler treats every byte as code, causing strings and data to be lost in code noise. Those that generate meaningful code require a lot of manual manipulation to make the output meaningful.

z80-smart-disassembler runs through the code in several passes to locate strings and data and produce more meaningful code.

It also supports templates that allow you to specify exactly how certain areas should be handled.

It's currently only been tested with Amstrad code and CP/M files, but if it's Z80 it should be flexible enough to work with just about any architecture.

It's still by no means perfect, but it should provide those of us who are looking to understand old code a much better base to get started.

If you have suggestions or feedback, please open an issue.

Thanks all!

GitHubGitHub - cormacj/z80-smart-disassembler: This is a Z80 disassembler that will try and be smarter about identifying strings data and labelsThis is a Z80 disassembler that will try and be smarter about identifying strings data and labels - cormacj/z80-smart-disassembler

Of course, dear Spidey, that with great power comes great responsibility, creating too many stacks can be overkill for some resource-constrained systems. But this is becoming less of a problem with new multi-core MCUs running at hundreds of Mhz, and with several megabytes of RAM.

What #ual says is: if your machine is not very powerful, we may be able to make it less painful to program highly optimised code for it. If your target machine is powerful, we may help to speed up your development cycles, and you may construct more nuanced, sophisticated, and reliable software with less effort.

Continued thread

New #ual programmers can start coding following most ideas they would assume to work using Lua, and progressively adopt the ual-specific stacked mode when it makes sense. For example, in resource-constrained systems where an algorithm using a Forth-like stack can be more efficient for certain tasks.

The > operator indicates a line that operates on the stack system, using a vocabulary for the most part similar to Forth's.

The @stackname > expression allows the programmer to select on which stack the operations are executed. The system comes with a data stack (@dstack) and a return stack (@rstack) built-in, but you can instantiate new ones, since stacks are first class objects in ual.

Take for example this implementation of Dijkstra's shortest path algorithm, uses its own separate stack to perform its computation.
github.com/ha1tch/ual/blob/mai

Hope you like it!

Continued thread

Other ideas in the works:

  • Adding the zxa assembler as one additional backend, to produce Z80 binaries.
    github.com/ha1tch/zxa
    in the future this could allow ual programs to target the ZX Spectrum and the RC2014.

  • Adding a uxntal backend to produce uxn roms.

Introducing the concept of transmutation

  • Write ual, or Z80 assembler, then send uxn or Z80 binaries to an ESP32 system, and have the binaries transmuted into Xtensa or RISC-V binaries as sort of shaders that run in-mcu.
GitHubGitHub - ha1tch/zxa: A simple Z80 assembler for the ZX Spectrum written in GoA simple Z80 assembler for the ZX Spectrum written in Go - ha1tch/zxa

ual is a new programming language for small systems, it borrows from Lua, Forth, and Go/TinyGo.
github.com/ha1tch/ual

It's not a scripting language, it compiles to TinyGo, and Go, therefore binaries are produced for the same targets of those compilers. In the case of TinyGo using an optimised LLVM-based backend (esp32, risc-v, wasm, various mcus), and for mainstream server/desktop computing architectures via the Go compiler's own backend (x86-64, arm64, etc.) and OSes (Linux, Mac, Windows).

((Work in progrees))
Not ready to use yet, but I thought I'd RFC before I complete the first implementation, whilst there's still time.

Hope you find it interesting!

Spec:
github.com/ha1tch/ual/tree/mai

Examples:
github.com/ha1tch/ual/tree/mai

Let me know what you think!

GitHubGitHub - ha1tch/ual: ual is the daughter of Forth, Lua, and Go.ual is the daughter of Forth, Lua, and Go. Contribute to ha1tch/ual development by creating an account on GitHub.

I've been reliving computer history the last week by playing with this "Micro-Professor" Z80 computer-on-a-board. It is very impressive!

The monitor has a pretty user friendly interface to read and write data manually into RAM, and also to set breakpoints and single step through programs.

Tonight I used the cassette audio interface to store a program onto "tape" (an audio recorder on my laptop) and read it back again. It works!