#DataPoint

2025-06-11

The #Datapoint2200 keyboard PCBs have arrived and they look fantastic. Somehow larger than I expected, and very imposing.

#datapoint #ttlcomputer #vintagecomputer #retroconputer #mechanicalkeyboard

Closeup of the Datapoint branding.Front of the PCB. It’s big !

Went out to dinner tonight with a red friend. Not a lawyer, not online, said he gets most of his info from the WSJ. Anyway, he wants Trump gone. #datapoint

RE: https://bsky.app/profile/did:plc:cz3p35o2uexpt6l5sngcnu2j/post/3lkqzv3ts722h

2024-11-01

I've now added some photos to the repository (link in previous toot). Not the best quality but there's now something to look at.

Here's a couple of those for the Decoder PCB. There are more in the repository itself.

#Datapoint #Datapoint2200

Top view of the populated PCB.Stylish three quarters view of the LEDsTop view of the oscillator circuit.Top view of the edge connector showing the pin labels.
2024-10-31

I've just pushed a very long overdue update to my Datapoint 2200 repository.

New stuff includes schematics for video, keyboard and keyboard logic.

I've added a fair few LEDs to the processor PCB for most of the main registers, but I need to analyse which other signals deserve to have them.

I also need to add some photos and PCB renders to the readme.

github.com/Bread80/Datapoint22

#Datapoint #Datapoint2200

2024-06-23

#Datapoint 2200: I have the memory cards designed and assembled but no memory chips. My plan is to add a 'backpack' board using modern parts.

Each card uses 32x 512 bit shift memory chips. The best modern option is probably 512 bit FIFOs and tie the outputs back to the inputs to recirculate data.

You can get 9-bit or 18-bit wide chips but every bit is read and written together. So you need a multiplexer on each bit to select new data or recirculate.

🧵

2024-06-11

What's the main challenge in assembling old code on a modern(ish) assembler? The old assemblers only consider the first few letters of a mnemonic significant. The 8008 has an INC opcode. My assembler has an INCLUDE directive.

(The old code doesn't use INCLUDE, but I need to import symbols from other files. The easy way is to write public symbols to a file in suitable format for an INCLUDE).

#Datapoint #Datapoint2200 #I8008 #Intel8008

2024-06-11

I wrote a Z80 assembler a few years ago. Thankfully I subclassed out the Z80 specific stuff. I've been updating it for Datapoint mnemonics and syntax.

I've also typed in the #Datapoint operating system listing from the Programmers Manual (46 pages. Nothing to a child of the 80s).

I'm now working through the files to get them to assemble. Currently there's a circular reference to resolve (comment out on first build), a couple of directives to add and an opcode which doesn't officially exist.

2024-06-06

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.

#Datapoint #Datapoint2200

A full page of schematics for the Keyboard Decoder PCB.A close up of the power on reset and reboot circuit which drives the /MEMORY_WRITE_READY pin and others associated with bootloading.
2024-06-04

'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'.

#Datapoint #Datapoint2200

A section of the Datapoint 2200 assembler, from the operating system listing in the programmers manual. This is a hex digit to binary routine. Twice it refers to the 'Carry tiggle'.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.
2024-06-04

I like how the #Datapoint 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.

From the Datapoint 'Programmers Manual' describing the HL and DE 'Compound instructions'
2024-06-02

I'm spending the afternoon running through the #Datapoint2200 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.

#Datapoint

2024-06-01

Long strings? What craziness is this!

(From the #Datapoint2200 Programmers Manual. The STATH library manipulates numbers stored in strings ('numeric strings')). In ASCII.

(I can't image how much that must have hammered numeric performance. And the Datapoint wasn't exactly the fastest machine to start with.)

#Datapoint

Sorry, the document isn't OCR'd. The page gives some examples of very long floating point numbers and explains the STATH maths library. See the next image for the highlighted paragraph."There is a size limit as to the number of characters a string may have in STATH. This is not true of ordinary text strings in CTOS where a string may, for some strange purpose, have thousands of characters in it. STATH is a mathematic package and the numeric strings represent numbers, The largest number of digits, therefore, is limited in STATH and that limit is 126."
James Bartlett :terminal:JamesDBartlett3@techhub.social
2024-04-30

Want to learn how to build and foster a strong, healthy #DataCulture in your organization?

Then you should definitely attend my session called "The #DataDojo: A #PowerBI #CommunityOfPractice" at #DataPointPrague2024 (May 30-31, #Prague, #CzechRepublic).

Register here: datapointprague.cz

Shout out to @StepanResl and #DataBrothers for organizing this conference, it's gonna be a real banger!

#MicrosoftFabric #DataPointPrague #DataPoint #DataLiteracy #DataGovernance #CenterOfExcellence #DataDriven #SoftSkills #CitizenDataAnalysts #SelfServiceAnalytics #SelfServiceBI

A promotional flyer for James Bartlett's upcoming session at the Data Point Prague 2024 conference. The content of the flyer is as follows:

May 30 & 31 ∙ 2024
[Data Point logo (an abstract Venn diagram with two transparent circles of equal size, their outlines and the overlapping area between them colored in a blue-green gradient)] Data Point
Prague

[Headshot photo of James Bartlett wearing a red-and-black plaid shirt, a black-and-blue vest, and black-rimmed glasses] [A Microsoft MVP (Most Valuable Professional) badge superimposed on the lower-right corner of the headshot photo]

James Bartlett
The Data Dojo: A Power Bl Community of Practice

[Microsoft Fabric logo (a stylized capital letter "F" which appears to be made from two pieces of cloth or ribbon, one colored in a solid seafoam green and the other a mint-pine gradient)] [Data Point logo (see description above)] [Microsoft Power BI logo (a stylized column chart with three overlapping columns, each in a progressively darker shade of yellow)]

www.datapointprague.cz
2024-04-19

I/O on the #Datapoint 2200 (as I'm understanding it) :

The instructions are similar to the i8008. Bits 4 to 1 of the bytecode code the I/O port. 32 addresses, but the first 8 are inputs, mapped to instructions IN 0..7. The remaining 24 are outputs mapped to instructions OUT 0..23.

The Datapoint uses the instruction EX for outputs (short for external IIRC)). Rather than port numbers it uses names. The first 8 are generic:
EX ADR
EX STATUS
EX DATA
EX WRITE
EX COM1 though EX COM4
🧵

2024-04-19

I'm adding a basic terminal to the #Datapoint 2200 simulator. It's listening to output ports (input still to do).

Here's a video of it saying "Hello World" in it's own fashion. Program listing in video comments.

youtu.be/FzSDf94Q0Ao

#TTLProcessor #Datapoint2200

2024-04-18

Returning to the #Datapoint simulator to try and fix a thorny issue that's been eluding me for a while.

The four chips at the bottom are '193 counters which normally house the program counter. Above are a row of '153 4-to-1 multiplexers. These can load an address from the stack, the H, L registers or the temp address register (for inline jump, call addresses).

Schematic as described in toot.
2024-04-07

"A programmer that's never programmed a computer in binary is like a child that's never run barefoot over Lego."

Also can you spot the schoolboy error in the first line of code? Which means all the jump target addresses are wrong and I need to redo a lot of stuff.

#Datapoint #TTLProcessor

A program for the Datapoint 2200:
  Code := [
  $06,          //0000: LA 7            ;A=7 (Terminal device ID)
  $51,          //0001: EX ADR          ;Select device
  $37, $00,     //0002: LL lo(message)  ;H,L=@message
  $2e, $10,     //0004: LH hi(message)

  //loop:
  $c7,          //0006: LAM             ;A=[HL]
  $a0,          //0007: NDA             ;AND A,A
  $68, $0f, $00,//0008: JTZ done        ;Jump if Zero True
  $57,          //000b: EX WRITE        ;Write data
  $44, $06, $00,//000c: JMP loop

  //done:
  $00           //000f: HALT
  ];

  Data := [
  //message:
  $48,$6f,$77,$64,$79,$2d,//DB 'Howdy-'
  $64,$6f,$6f,$64,$6c,$79,//DB 'doodly'
  $2d,$64,$6d,$2c,$20,    //DB '-do, '
  $68,$6f,$77,$27,$73,$20,//DB 'how's '
  $69,$74,$20,            //DB 'it '
  $67,$6f,$69,$6e,$67,$3f,//DB 'going?'
  $00                     //End-of-string marker
  ];
2024-04-06

I fixed the ALU issue. The clock input of the carry flag latch wasn't triggering. The circuit uses a couple of open-collector gates and a pull-up. A bug in my simulator failed to recognise the net's rising edge.

A few upgrades to the simulator so it can free run and some speed ups. Below is after adding 1 to A and looping until the carry flag is set, using a JFC (Jump if Carry False) and HALTing.

#Datapoint #TTLProcessor

The simulators panel display. A register is 0, B is 1. HALT is signalled.
2024-04-04

Todays test program: load values into the A and B registers, add (or subtract) them and loop.

I've got the jump working but the ALU ops are not so pretty. It's inverting each bit of A if the bit in B is set. The circuit for the ALU is all standard gates, and I'd be surprised if there's any bugs in there given the rest of the simulator is working so well.

So it's probably a schematic issue, and one which will take a bit of debugging.

#Datapoint #TTLProcessor

Bytecode for the program in the Delphi source:
LA 0 ;Load A with 0
LB 255 ;Load B with 255
loop:
ADB ;Add A to B, result in A
or SUB ;Subtract B from A, result in A
JMP $0004 ;Jump to loop
2024-04-03

"Hello!!" (Read the registers from top to bottom <g>).

(I had to fix a bug in the 7474 simulation to get this to run. It was listening to the SET and RSET pins if they went low. But the design had both low at the same time, the first one to go high 'lost'. The simulator now updates if either pin changes to any state (it already checks them to overrides CLK updates they're active)).

#Datapoint #TTLProcessor

The Datapoint 2200 simulator. The register A, B, C, D, E, H and L from top to bottom show the binary for the string "Hello!!"

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst