@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

I’m secretly happy about the Sonos app-pocalyse. It’s given me the kick I needed to finally ditch it and move to something (hopefully) better.

bread80,
@bread80@mstdn.social avatar

I’m moving to Denon HEOS. I’m hoping that something from an established audio company with a long history - rather than a tech industry start up - will mean a slower path to enshittification.

bread80,
@bread80@mstdn.social avatar

@RetroFunPL New ‘improved’ app, rewritten from the ground up.

The UX is horrible. The key pain point for me is that there doesn’t seem to be any way to connect to the NAS. Although it did work for the first five minutes, but the artists list had no A-Z quick links and I was having to scroll down through several hundred entries.

bread80,
@bread80@mstdn.social avatar

@RetroFunPL zone day I’ll have cable everywhere and LAN sockets. Not sure I want the hassle and disruption just yet though.

Dtl, to random
@Dtl@mastodon.social avatar

Looking at the has anyone wired up the GPIO and done bit banged video from that rather than use the built in video stuff?

bread80,
@bread80@mstdn.social avatar

@Dtl Compared to a Pico it’s only single core and a much slower clock speed. I’m guessing it’s doable but with low resolution and frame rate.

GrantMeStrength, to random
@GrantMeStrength@hachyderm.io avatar

This new sound card for the features a socket to house the fake AY chips that proliferate on Amazon and eBay.

image/jpeg
image/jpeg

bread80,
@bread80@mstdn.social avatar

@GrantMeStrength One day every DIP chip will have a tiny FPGA hidden underneath it.

bread80, to random
@bread80@mstdn.social avatar

I've renamed the EXTERN directive to CALL. That feels a lot more logical given it's function (to call assembly code such as ROM routines).

It also makes it straightforward to implement an RST directive to call assembly via a Z80 RST instruction.

(In the screenshot I've cleaned up the comments in the output to make it easier to read.)

#Quiche #compiler #Z80 #Delphi

bread80, to random
@bread80@mstdn.social avatar

#Compiler update: Write and writeln marks the end of the the refactoring of operations and primitives which has taken up the last few months.

I've also refactored a few other parts to better future proof them.

There a still a few rough edges to smooth off in the expression parser (implicit types) and code generator (parameter loading and validation).

But this means I can now return to interesting stuff :) as well as moving towards some kind of initial (pre-beta) release.

#Quiche #Z80

Output if the test program running on an Amstrad CPC emulator.

partnumber2, to random
@partnumber2@c.im avatar

60 years ago today this happened. Up until then we only had 2 (TWO) channels. You nippers don’t know how good you’ve got it with your on-demand streaming services. 😎

video/mp4

bread80,
@bread80@mstdn.social avatar

@partnumber2 That content is so close to a deadpan comedy sketch that I’m having to remind myself it’s real.

bread80, to random
@bread80@mstdn.social avatar

I/O on the 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
🧵

bread80,
@bread80@mstdn.social avatar

EX ADR selects a device.

For output:
EX WRITE writes data to the selected device.
EX COMn send device specific COMmands (they are not serial ports).

EX STATUS and EX DATA are use for /input/. They tell the device to prepare to send status info or data.

There's a single INPUT instruction which reads the status or data from the device selected by EX ADR.

bread80,
@bread80@mstdn.social avatar

To poll a device for input data:
Set A to device address
EX ADR ;Device selected
EX STATUS ;Prepare to read status byte
INPUT ;Read status byte
Check value. If data available:
EX DATA ;Prepare to read data
INPUT ;Read data
Data is now in A register.

All of which is horribly long winded.

bread80,
@bread80@mstdn.social avatar

However, the output port is decoded on the decoder board using bits 4..1 of the instruction register. They're exposed on pins on the processor boards edge connector.

The instruction decoding for the INPUT command looks to be partial enough that it is issued irrespective of the port address. If so another board could be decoding I4..I1 to give an input port address.

(But the pinouts for every board are unique to that board. It's possible no other board has access to them).

bread80, to random
@bread80@mstdn.social avatar

I'm adding a basic terminal to the 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.

https://youtu.be/FzSDf94Q0Ao

bread80,
@bread80@mstdn.social avatar

BTW the 'Clocks' readout on the simulator counts half cycles. The simulation takes just over 700k half cycles to run. That translated to about 35ms at the 9.84MHz crystal frequency.

bread80, to random
@bread80@mstdn.social avatar

RIP Z80 🥲

End of life notification letter:
https://www.mouser.com/PCN/Littelfuse_PCN_Z84C00.pdf

bread80,
@bread80@mstdn.social avatar

@sourdust Presumably eZ80 and other modern variants (which aren’t affected).

bread80,
@bread80@mstdn.social avatar

@richardloxley Considering you can still get NOS for chips discontinued decades I don’t think it’s worth panicking. But a little stash never hurt anybody 🙂

thelastpsion, to random
@thelastpsion@bitbang.social avatar

I have come to the conclusion that compiler writing is in my future. I have repeatedly told myself it's a terrible idea. I have even publicly said I'm not going to do it unless someone pays me a lot of money.

But the money won't happen. I know I'm going to do it anyway.

It's a next year problem. I have other projects to complete first, plus It'll take me at least that long to gain a fraction of the knowledge I need to start.

CTRAN was the start, and it gave me a tiny taste. I even liked it.

bread80,
@bread80@mstdn.social avatar

@thelastpsion Sounds fun. Painful. But fun.

bread80, to random
@bread80@mstdn.social avatar

Returning to the 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).

bread80,
@bread80@mstdn.social avatar

Executing the LAM instruction (equivalent to LD A,(HL) in Z80) involves storing PC on the stack, asserting /ADDR_SEL.HL to set the multiplexers and /ADDR.LOAD to latch the data in the counters. Data latched whenever the signal is low.

But the simulator loads all 1 bits - the 'off' value for the multiplexers.

bread80,
@bread80@mstdn.social avatar

/ADDR_SEL.HL and /ADDR.LOAD are driven by the same circuit, timing separated by gate delays. Presumably this works in the original machine but my simulator is experiencing some kind of race condition which keeps.

I've tweaked the simulated gate delays for the multiplexers and the timing logs show they're changing /after/ LOAD is cancelled. Next stage is to add some detailed logging to the chips to see what's happening.

Dtl, to random
@Dtl@mastodon.social avatar

It finally arrived. I got one of the plessy amplifier chips with a bolt stuck to the top.
I'll see if I can x-ray it tomorrow. @philpem I think you were interested in this.

bread80,
@bread80@mstdn.social avatar

@Dtl @philpem As used by Dr Frankenstein in the audio output circuits of his monster. Thus explaining the large nuts on the side of its neck.

tubetime, to random
@tubetime@mastodon.social avatar

help i'm stuck in a 7-segment decoder factory

bread80,
@bread80@mstdn.social avatar

@tubetime @f4grx @cvtsi2sd P for Programming?

bread80, to random
@bread80@mstdn.social avatar

And I only just found this. I didn’t realise the Flan name actually made it into production.

This means it’s a revision 4 board, from the first production run. The run with bugs in the video chip and ROM.

bread80,
@bread80@mstdn.social avatar

@saustrup Just something I read on the Enterprise Forever forum. The issue 4 had the Flan name on the board. Those were the boards used in the Enterprise 64s. I don’t know anything beyond that. I got the impression that was the first production run. Presumably the earlier issues were prototypes.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • normalnudes
  • tsrsr
  • DreamBathrooms
  • thenastyranch
  • magazineikmin
  • everett
  • Youngstown
  • tacticalgear
  • slotface
  • ngwrru68w68
  • rosin
  • khanakhh
  • kavyap
  • PowerRangers
  • Leos
  • InstantRegret
  • mdbf
  • Durango
  • GTA5RPClips
  • cubers
  • vwfavf
  • ethstaker
  • hgfsjryuu7
  • osvaldo12
  • tester
  • cisconetworking
  • modclub
  • anitta
  • All magazines