@bread80@mstdn.social avatar

bread80

@bread80@mstdn.social

Amstrad CPC, RC2014, Z80, Raspberry Pi Pico, TTL processors and the occasional bit of Eurorack

This profile is from a federated server and may be incomplete. Browse more on the original instance.

bread80, to random
@bread80@mstdn.social avatar

Now to get memory writes working in the Datapoint simulator. There's a /MEMORY_WRITE_READY input which needs to be driven. The circuit for this is on the keyboard decoder PCB.

Unconnected to the rest of that board, except for a POR output. Not the first bit of circuit I've found spilled onto a different board.

The circuit drives the /MEM_WRITE_READY line while the hardware bootloader reads data from tape. I can just glue it high for now.

A close up of the power on reset and reboot circuit which drives the /MEMORY_WRITE_READY pin and others associated with bootloading.

bread80,
@bread80@mstdn.social avatar

For anyone who may not be aware, the Datapoint has no ROM (except character ROMs). At (re)boot times the machine rewinds the first tape deck and loads the first program record on it. This is done by directly driving the address counters in the processor.

And all of this is done in hardware.

bread80, to random
@bread80@mstdn.social avatar

'Clear the carry tiggle'.

I think they meant to say 'toggle', although twice suggests it may be intentional.

The documentation usually refers to 'flip-flops' as opposed to 'flags', or 'toggles'.

Section 2.6 of the Datapoint Programmers Manual describing the 'Control Flip-Flops'. There are four: carry, zero, sign and parity. Each is reference by a capital letter (C, Z, S or P) with and a subscripted lower case f.

bread80, to random
@bread80@mstdn.social avatar

I like how the assembler has pseudo instructions to load a 16-bit value into the H, L and D, E registers. Strangely there's no equivalent for B, C.

bread80,
@bread80@mstdn.social avatar

The 8008 assembler on the other hand requires some gymnastics to deal with a 16-bit label. The \HB\ prefix is specifying the high byte of the address. Note also, at lest in this codebase, there are no labels for data storage areas. The high byte value uses the label for 256-byte page number number. The low byte uses a magic constant.

I don't know if that's an assembler shortcoming or just coding style (saving code and memory?)

bread80, to random
@bread80@mstdn.social avatar

There's a version of BASIC available for the Intel 8008 called SCELBAL. I've been looing to see it it could be back-ported to the Datapoint 2200.

The first image is the subroutine to increment a 16-bit value in the H and L registers on the 8008. The second is the equivalent for the 2200. One of the additions to the 8008 was INC and DEC instructions (INx, DCx).

On the Datapoint all ALU ops have to go via the A register.

INCHL* LAL AD 1 LLA LAM AC 0 LMA RET

bread80,
@bread80@mstdn.social avatar

...Which means every instance of INx or DCx needs to be modified to involve the A register, and the nearby codes needs to be inspected to see if there is a meaningful value in A. If so that value needs to be moved elsewhere, or the code rewritten to use different registers.

Which, sadly, means the entire code base would need an rewrite :(

bread80,
@bread80@mstdn.social avatar

The Datapoint assembler can even handle expressions! But only three operations: Add, Subtract and 'high-byte'.

bread80, to random
@bread80@mstdn.social avatar

I'm spending the afternoon running through the instruction set in the simulator to test everything.

So far, loads working, as are all the ALU operations, including the two shifts.

I've done my first ever use of the stack (with CALL and RETurn) which checks out okay.

Pretty much the only thing left to test is writes to memory. I'm fairly sure there's still a bug in the simulator code due to time when I'm clocking the memory bits. Should be a simple fix.

bread80, to random
@bread80@mstdn.social avatar

AI in science fiction: Insufficent data, unable to compute.

AI in the real world: Here’s a couple of pages that sound plausible.

bread80, to random
@bread80@mstdn.social avatar

After an evening wrestling with Inkscape I’m ready for an early night. But the diagram actually looks pretty good, and means I’m significantly closer to publishing an article I wrote six months ago.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • mdbf
  • ngwrru68w68
  • tester
  • magazineikmin
  • thenastyranch
  • rosin
  • khanakhh
  • InstantRegret
  • Youngstown
  • slotface
  • Durango
  • kavyap
  • DreamBathrooms
  • megavids
  • tacticalgear
  • osvaldo12
  • normalnudes
  • cubers
  • cisconetworking
  • everett
  • GTA5RPClips
  • ethstaker
  • Leos
  • provamag3
  • anitta
  • modclub
  • lostlight
  • All magazines