--- Log opened Fri Feb 03 00:00:26 2023 |
00:11 | <&McMartin> | Oh it was following any lesson links that it just flat out refused to do, claiming they led to The Bad Place |
00:14 | <&McMartin> | Anyway, yeah, after looking at the capabilities of the playground on easy6502 that is actually *exactly* what you and they asked for so I think that's my first recommendation, with text-mode C64 as a followup if they want to get into retrocoding proper, since there's a natural ramp from stdio to direct screen memory/color edits to sprites to bitmap modes, with a side quest on the SID basically whenever you |
00:14 | <&McMartin> | want |
00:51 | | Kizor [a@Nightstar-nfsqa7.yok.fi] has quit [Ping timeout: 121 seconds] |
01:04 | | Degi_ [Degi@Nightstar-muv3uf.pool.telefonica.de] has joined #code |
01:05 | | Degi [Degi@Nightstar-m4k.djm.14.89.IP] has quit [Ping timeout: 121 seconds] |
01:05 | | Degi_ is now known as Degi |
01:24 | <&ToxicFrog> | Huh. I likewise cannot find anything suspicious in the lessons proper. |
01:24 | <&ToxicFrog> | But thank you very much, I will pass that on :) |
01:26 | | Kizor [a@Nightstar-nfsqa7.yok.fi] has joined #code |
01:48 | | gizmore [kvirc@Nightstar-tqdh4h.dip0.t-ipconnect.de] has joined #code |
01:51 | | gizmore|2 [kvirc@Nightstar-6mvp6d.dip0.t-ipconnect.de] has quit [Ping timeout: 121 seconds] |
04:29 | <&McMartin> | One fun part about writing about Classic Mac programming is that you get to refer to the OS as "the System", capital S, because that is its name until Mac OS 8 |
04:59 | | Degi_ [Degi@Nightstar-k9sv4r.pool.telefonica.de] has joined #code |
05:01 | | Degi [Degi@Nightstar-muv3uf.pool.telefonica.de] has quit [Ping timeout: 121 seconds] |
05:01 | | Degi_ is now known as Degi |
06:14 | | Vorntastic [uid293981@Nightstar-phvupn.irccloud.com] has joined #code |
06:14 | | mode/#code [+qo Vorntastic Vorntastic] by ChanServ |
07:42 | | abudhabi_ [abudhabi@Nightstar-emidrd.adsl.tpnet.pl] has joined #code |
07:45 | | abudhabi__ [abudhabi@Nightstar-q7v4ii.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds] |
08:06 | <&McMartin> | More Mac nonsense, though this is just an initial code walkthrough of my maybe-quarter-done minimal application. https://bumbershootsoft.wordpress.com/2023/02/03/classic-mac-development-beginning-in-earnest/ |
11:24 | | Vorntastic [uid293981@Nightstar-phvupn.irccloud.com] has quit [[NS] Quit: Connection closed for inactivity] |
11:37 | | Vorntastic [uid293981@Nightstar-phvupn.irccloud.com] has joined #code |
11:37 | | mode/#code [+qo Vorntastic Vorntastic] by ChanServ |
15:01 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code |
15:01 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
16:13 | <&ToxicFrog> | Mixed results with easy6502. symbol finds that it introduces concepts/instructions in an order that doesn't make a lot of sense, and a lot of the exercises are very open-ended and lack clearly defined goals. |
16:13 | <&ToxicFrog> | This also prompted the question "how do you map bits in the instruction into signals inside the chip itself" |
16:14 | <&ToxicFrog> | Which prompted me to crack open some 6502 schematics |
16:14 | <&ToxicFrog> | And the answer turns out to be "via an instruction predecoder that turns the 8-bit opcode into a ~16-bit "partially decoded" opcode and then feeds that + clock information into a 21x130 PLA |
16:15 | <~Vornicus> | ...gracious |
16:15 | <&ToxicFrog> | which then feeds into a logic nest that takes up like a third to processor to generate the ~64 actual signals that control which registers are reading/writing which buses, what operation the ALU is performing, etc. |
16:15 | <&ToxicFrog> | *takes up a third of the processor die |
16:16 | <&ToxicFrog> | This explains why it is hard to come up with a straightforward instruction bit -> internal signal mapping: there isn't one. |
16:22 | <~Vornicus> | that's ... cool. i wonder if it could be rejiggered into something more sane. |
16:54 | | Vorntastic [uid293981@Nightstar-phvupn.irccloud.com] has quit [[NS] Quit: Connection closed for inactivity] |
17:38 | | Emmy [Emmy@Nightstar-qo29c7.fixed.kpn.net] has joined #code |
21:24 | <&McMartin> | So the thing is, the 6502 is already one of the most absurdly logic-optimized production chips out there. |
21:24 | <&McMartin> | (And also: it was modified by legal command to be less compatible with the 6800, which makes PLAs help a lot~) |
21:25 | <&McMartin> | and also also: though it doesn't mean it in the way that, say, MIPS does -- instructions all take fixed numbers of cycles depending on what they do when they do it -- the 6502 is, but 1970s standards, a "pipelined" architecture. This definitely does not apply to memory accesses, and I've never been entirely sure what it *does* mean to them, but I've assumed that the ALU operations get multiplexed somehow |
21:25 | <&McMartin> | during address decoding. |
21:25 | <&McMartin> | But the 6502 was, IIRC, built out of something like 4,000 transistors |
21:26 | <&McMartin> | There is a point where you find yourself asking "how much simpler do you want to get" |
21:26 | <&McMartin> | And the answer is this: https://gigatron.io/ |
21:27 | <&ToxicFrog> | 3000-3500 transistors depending on what revision/manufacturer you're looking at. |
21:27 | | * McMartin tries to remember what he was told by the MOnSter 6502 guys |
21:27 | <&McMartin> | I won't swear to it but I think this may also depend on whether or not you count the transistors that are actually just resistors printed on the IC |
21:27 | <&McMartin> | (Because the MOnSter guys just used resistors for those~) |
21:29 | <&McMartin> | Anyway, no matter how you count, this is less than 10% the transistor count of the MC68000, which is older than it |
21:31 | <&ToxicFrog> | Also the Gigatron looks amazing |
21:41 | <~Vornicus> | wait, the 68000 is older? |
21:42 | <~Vornicus> | man. |
21:47 | <&McMartin> | Yeah, its comparative sophistication is that most of the things we think of as microcomputer CPUs are basically hopped-up microcontrollers, but the 68000 was, by deesign and intention, a stripped-down minicomputer. |
21:49 | <&McMartin> | The best part about the Gigatron was that they did get a chance to show it to some of the old hardware designers from the era of hand-designed and hand-built CPUs, and they were all flabbergasted by its power and elegance |
21:50 | <&McMartin> | So in a very real sense, we can directly measure that, despite the increasing mechanization and reliance on mass production and replication and automatic routine and optimization |
21:50 | <&McMartin> | We have, unmistakably, Learned Something about how to do this stuff |
21:58 | <&ToxicFrog> | That is incredibly cool. |
22:01 | <&ToxicFrog> | And yeah, re the 6502, I think part of the shock here is that all my cpu-design experience is on stuff where we had a 16 bit data bus and no pipelining or multi-cycle opcodes. At that point you can get away with, say, 2 bits for instruction family and then those control a bank of muxes that determine which decoder the instruction goes to, and the decoders are fairly straightforward |
22:01 | <&ToxicFrog> | affairs that just peel apart the opcode into different signals and route them to different parts of the control circuitry. |
22:01 | <&ToxicFrog> | The 6502 (a) takes at least two clocks to execute every single instruction, often more and (b) packs 50+ instructions into 8 bits, at which point you cannot adopt a straightforward 1 bit in IR = 1 wire in the chip design. |
22:02 | <&McMartin> | Ah, that makes sense |
22:03 | <&McMartin> | And that also reminds me a bit of the very earliest punchcard computers, which ISTR did things like split things up like that but also use, e.g., letters as operand flags so that you'd just write the machine code directly as AM47I16 for ADD [47], #16 or whatever |
22:04 | <&McMartin> | Most of my experience with those comes from gawking at museum pieces, not actually learning to command or operate them; I'm overall less interested in the room-sized computers even when you make them small |
22:04 | <&McMartin> | (But also, AIUI "assemblers" are called that because they'd put the instructions together for you from other sources once that became a less trivial thing to do.) |
22:05 | <&McMartin> | (Likewise, the original "compilers" were more like library linkers; they took a bunch of routines and made them one binary blob for use elsewhere) |
22:05 | <&McMartin> | (... which is much closer to what "compiling" actually *means*) |
22:07 | | * McMartin actually scrolls down the Gigatron page, !s |
22:08 | <&McMartin> | I learned of the Gigatron through them presenting it at VCF West, and I now have the uncomfortable sense that I may have wound up briefly meeting Marcel van Kervinck mere months before he died |
22:15 | < Alek> | as opposed to months after he died? |
22:15 | <&McMartin> | That would have been a challenge, to be sure |
22:17 | | macdjord [macdjord@Nightstar-04p1sk.dsl.bell.ca] has quit [[NS] Quit: Deep inside, every housecat believes themself to be just a temporarily embarrassed tiger.] |
22:19 | | macdjord [macdjord@Nightstar-04p1sk.dsl.bell.ca] has joined #code |
22:19 | | mode/#code [+o macdjord] by ChanServ |
22:53 | | Emmy [Emmy@Nightstar-qo29c7.fixed.kpn.net] has quit [Ping timeout: 121 seconds] |
22:56 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Connection closed] |
--- Log closed Sat Feb 04 00:00:27 2023 |