<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: gp2000</title><link>https://news.ycombinator.com/user?id=gp2000</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 16 May 2026 11:25:10 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gp2000" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by gp2000 in "Show HN: Z80-μLM, a 'Conversational AI' That Fits in 40KB"]]></title><description><![CDATA[
<p>Well, I was pessimistic.  Just pushed an update that slightly more than doubles the execution speed with a PR to the main depot pending.  It is very close to 20 times faster than the original.</p>
]]></description><pubDate>Wed, 07 Jan 2026 09:46:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=46524442</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=46524442</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46524442</guid></item><item><title><![CDATA[New comment by gp2000 in "Show HN: Z80-μLM, a 'Conversational AI' That Fits in 40KB"]]></title><description><![CDATA[
<p>Though it'll still be kinda slow on a Model I, I've written an about 9 times faster Z-80 code for the network evaluation.  I imagine the pull request will end up in the main depot but for now you can find it in <a href="https://github.com/gp48k/z80ai" rel="nofollow">https://github.com/gp48k/z80ai</a><p>I think I can do a little bit better; maybe 10% faster.</p>
]]></description><pubDate>Mon, 05 Jan 2026 18:54:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=46502994</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=46502994</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46502994</guid></item><item><title><![CDATA[New comment by gp2000 in "When Oregon blew up a whale with 20 cases of dynamite (2024)"]]></title><description><![CDATA[
<p>I first heard of this in humorist Dave Barry's column.  His description is worth a read.<p><a href="https://www.theexplodingwhale.com/evidence/resources/dave-barry-article" rel="nofollow">https://www.theexplodingwhale.com/evidence/resources/dave-ba...</a></p>
]]></description><pubDate>Tue, 18 Mar 2025 08:46:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=43396960</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=43396960</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43396960</guid></item><item><title><![CDATA[New comment by gp2000 in "Disassembly of the Asteroids arcade game firmware"]]></title><description><![CDATA[
<p>And on github.  I imagine it is the same as the Internet Archive copy but I have not checked.<p><a href="https://github.com/historicalsource/asteroids">https://github.com/historicalsource/asteroids</a></p>
]]></description><pubDate>Thu, 26 Jan 2023 19:17:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=34537198</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=34537198</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34537198</guid></item><item><title><![CDATA[New comment by gp2000 in "Trs80gp – A TRS-80 Emulator"]]></title><description><![CDATA[
<p>It is in the sense that Radio Shack put TRS-80 as a brand on all of their computers up until the mid eighties when they started to move into PC clones.  Xroar emulates the Color Computer which was known as the "TRS-80 Color Computer".<p>Though, to be sure, most often TRS-80 is used to refer to the Model 1, 3, 4 line.  But plenty of people will think of the Color Computer when they hear TRS-80.  Or, possibly, their line of rebranded pocket and laptop computers like the TRS-80 Model 100 or TRS-80 Pocket Computer 1.</p>
]]></description><pubDate>Thu, 26 Jan 2023 07:08:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=34528588</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=34528588</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34528588</guid></item><item><title><![CDATA[New comment by gp2000 in "Trs80gp – A TRS-80 Emulator"]]></title><description><![CDATA[
<p>The version for the Model 3 runs on stock hardware as it shipped in 1980.  It has a interrupt that fires every second vblank.  Thus it is possible to get in sync with the beam but to remain in sync the program must keep track of every cycle it executes.<p>The Model 1 version does require a hardware mod to get access to vsync.<p>I wrote those programs and couldn't have done it without something of a virtuous circle of trying stuff on the real hardware and then improving the emulator to more accurately model the hardware and so on.</p>
]]></description><pubDate>Thu, 26 Jan 2023 07:03:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=34528552</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=34528552</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34528552</guid></item><item><title><![CDATA[New comment by gp2000 in "Trs80gp – A TRS-80 Emulator"]]></title><description><![CDATA[
<p>It really was a term of derision.  Sure, some may have used it affectionately and even more might do so now, but by and large it wasn't used in kindness.<p>To cite a reference, the first issue of "80 Microcomputing", a magazine dedicated to the TRS-80 line of computers.  See the second paragraph of Wayne Green's editorial "80 Remarks" on page 8:<p><a href="https://archive.org/details/80-microcomputing-magazine-1980-01/page/n7/mode/2up" rel="nofollow">https://archive.org/details/80-microcomputing-magazine-1980-...</a></p>
]]></description><pubDate>Thu, 26 Jan 2023 06:58:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=34528523</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=34528523</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34528523</guid></item><item><title><![CDATA[New comment by gp2000 in "A Wordle clone in 50 lines of Bash"]]></title><description><![CDATA[
<p>That isn't a bug.  In the original if a guess contains a repeated letter and there is only one occurrence of that letter in the target work then the first (on the left) letter will be yellow and the second black.<p>You can see this with today's word by guessing MOTTO.  The leftmost T will be yellow and the rightmost will be black.<p>Similarly, if you guess TENET the initial T is black but the final T is green.<p>Today's word is ZBVFG (rot13).</p>
]]></description><pubDate>Wed, 02 Feb 2022 08:16:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=30175060</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=30175060</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30175060</guid></item><item><title><![CDATA[New comment by gp2000 in "Defender (1981) by Eugene Jarvis and Sam Dicker"]]></title><description><![CDATA[
<p>I imagine you're recalling this folklore.org posting:
<a href="https://www.folklore.org/StoryView.py?story=Make_a_Mess,_Clean_it_Up!.txt" rel="nofollow">https://www.folklore.org/StoryView.py?story=Make_a_Mess,_Cle...</a></p>
]]></description><pubDate>Mon, 12 Jul 2021 23:31:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=27816300</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=27816300</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27816300</guid></item><item><title><![CDATA[New comment by gp2000 in "Z80, the 8-bit Number Cruncher (2011)"]]></title><description><![CDATA[
<p>And it could also save time.  The Z-80 conditional return takes 5 cycles (or "T-States" in Zilog terminology) to execute if the condition is not met and 11 cycles otherwise.  Quite worthwhile in testing for uncommon cases.  Consider this routine to print a message that is terminated by nul or newline:<p><pre><code>   PMESS  LD   A,(HL)     ; get character from message
          INC  HL         ; move message pointer to next character
          CP   10         ; newline?
          RET  Z          ; return if so
          OR   A          ; zero?
          RET  Z          ; done if so
          CALL PCHAR      ; print character
          JP   PMESS      ; keep looping
</code></pre>
If instead of "RET Z" we had to do a conditional jump to a return it would be 10 cycles for each test instead of 5.<p><pre><code>          CP   10
          JP   Z,DONE     ; 10 cycles, jump taken or not
          ...
          JP   PMESS
   DONE:  RET             ; 10 cycles, BTW
</code></pre>
The conditional return just happens to be cheaper if not taken because it skips the work of popping the return address off the stack.  Though purely an outcome of the implementation you can treat it as sort of a branch prediction.<p>Incidentally, the Z-80 also has relative branches (JR) that differ in execution time whether they are taken or not.  The branch offset is a single byte so JR is only 2 bytes compared to JP's 3.  A JR is 7 cycles if not taken, 12 otherwise.  Again, we can treat it as a hard-coded branch prediction that predicts the branch is not taken.  If space or distance to target is not a problem, a JR is faster if taken less than 60% of the time.</p>
]]></description><pubDate>Fri, 18 Sep 2020 18:29:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=24520233</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=24520233</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24520233</guid></item><item><title><![CDATA[New comment by gp2000 in "Z80, the 8-bit Number Cruncher (2011)"]]></title><description><![CDATA[
<p>The Z-80 stack pointer (SP) is a full 16 bit register.  The stack can be anywhere in memory and be as large as needed.<p>The 6502 has only an 8 bit stack pointer which points into page 1 only (addresses 0x100 .. 0x1FF).</p>
]]></description><pubDate>Fri, 18 Sep 2020 18:08:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=24519992</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=24519992</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24519992</guid></item><item><title><![CDATA[New comment by gp2000 in "Avro Arrow – The record-breaking jet which still haunts a country"]]></title><description><![CDATA[
<p>Perhaps this Vintage Space episode is video you were thinking about:<p><a href="https://www.youtube.com/watch?v=r5g9AglBmSI" rel="nofollow">https://www.youtube.com/watch?v=r5g9AglBmSI</a></p>
]]></description><pubDate>Wed, 17 Jun 2020 00:19:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=23546086</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=23546086</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23546086</guid></item><item><title><![CDATA[New comment by gp2000 in "Destroying x86_64 instruction decoders with differential fuzzing"]]></title><description><![CDATA[
<p>The Z-80 came out in 1976, three years before the 68000 and was an extension of the 8080.  I don't see comparing the two as fair or sensible.</p>
]]></description><pubDate>Thu, 31 Oct 2019 21:12:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=21413758</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=21413758</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21413758</guid></item><item><title><![CDATA[New comment by gp2000 in "Reverse engineering a custom CPU from a single program"]]></title><description><![CDATA[
<p>Yes, enjoyable and good ideas.  I feel like I've been on that "project" before.  You do a bunch of work, dig into things and then discover a simple answer that, in hindsight, could have been applied immediately and made all the investigation irrelevant.<p>Usually out of pride or the sunk cost fallacy (or something like it) I'll convince myself there was no other way the problem was going to be solved.  Either way the next time around I spend just a little bit longer trying to think of an easy way out.</p>
]]></description><pubDate>Wed, 25 Sep 2019 22:59:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=21076513</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=21076513</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21076513</guid></item><item><title><![CDATA[New comment by gp2000 in "Altavista: The rise and fall of the biggest pre-Google search engine"]]></title><description><![CDATA[
<p>Although it is a historical (and disavowed) footnote, the Open Text Index launched in April 1995 and sported full text indexing of web pages -- more than 6 months before Alta Vista's launch in December that year.<p>It did serve as a back-end search for Yahoo! though it never could keep up with the full query volume.  It was lambasted by the creators of Google for experimenting with putting clearly-marked ads in search results.  That transgression looks hilariously quaint to modern eyes.<p><a href="https://www.referenceforbusiness.com/history2/72/Open-Text-Corporation.html" rel="nofollow">https://www.referenceforbusiness.com/history2/72/Open-Text-C...</a></p>
]]></description><pubDate>Fri, 15 Feb 2019 20:00:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=19174191</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=19174191</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19174191</guid></item><item><title><![CDATA[New comment by gp2000 in "Product Evaluation of the Zilog Z80-CTC (1979) [pdf]"]]></title><description><![CDATA[
<p>You can request the documents and go photocopy them yourself at the museum.  Or have their researchers do it for a fee.<p>Just don't bother with these as they've already been done:  <a href="https://www.dropbox.com/sh/yqpc3bglatpmpvl/AACA2CXFv1XeA1ZmLqgCgyUha?dl=0" rel="nofollow">https://www.dropbox.com/sh/yqpc3bglatpmpvl/AACA2CXFv1XeA1ZmL...</a></p>
]]></description><pubDate>Sun, 12 Aug 2018 20:17:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=17746207</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=17746207</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17746207</guid></item><item><title><![CDATA[New comment by gp2000 in "The Art of Assembly Language (1996)"]]></title><description><![CDATA[
<p>The original arcade Mortal Kombat (and MK2, MK3 and UMK3) were all written in assembly for the TMS34010 processor.  No doubt ports of it to the Sega Genesis did use 68K assembler.<p>The TMS34010 was something like a CPU and 2D graphics processor combined.  It has the ability to change its word size from anywhere between 1 and 32 bits with data addressable on bit boundaries.  It's wild.<p><a href="https://en.wikipedia.org/wiki/TMS34010" rel="nofollow">https://en.wikipedia.org/wiki/TMS34010</a></p>
]]></description><pubDate>Thu, 29 Mar 2018 23:42:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=16712280</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=16712280</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=16712280</guid></item><item><title><![CDATA[New comment by gp2000 in "Atari Tempest: Dave Theurer’s Masterpiece"]]></title><description><![CDATA[
<p>The bug is explained by Dave Theurer himself in this video:  <a href="https://www.youtube.com/watch?v=41TbGi7u598&t=168" rel="nofollow">https://www.youtube.com/watch?v=41TbGi7u598&t=168</a><p>Like many games at the time the code in the ROMs had tamper protection.  The basic idea is to detect if the ROM has been altered and if so assume it is a pirated copy and do something to cause the game to fail.  Pirates could still make exact copies but they'd have to retain copyright notices and trademarks which makes them more vulnerable to detection and prosecution.<p>At the last minute Dave changed the position of some logos on screen but forgot to update the copy protection.  When an illegal copy was detected the game would use some of the digits of the score obtained at the end of the game to zap bytes in memory if the overall score itself was within some range.  This kind of random scrambling that only happens semi-randomly is better than copy protection that triggers deterministically.  Imagine if the game did a checksum of its ROM and immediately said "Illegal Copy Detected - Program Halted".  It would make it easier to find the copy protection routines and disable them.<p>So the first version that shipped thought it was an illegal copy and triggered the random scrambling.  It so happens that sometimes the random scrambling would result in giving the player 40 credits.<p>There were other effects which players discovered and are listed here:
<a href="https://forums.arcade-museum.com/archive/index.php/t-79058.html" rel="nofollow">https://forums.arcade-museum.com/archive/index.php/t-79058.h...</a></p>
]]></description><pubDate>Sat, 20 Jan 2018 10:12:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=16192832</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=16192832</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=16192832</guid></item><item><title><![CDATA[New comment by gp2000 in "A Comprehensive Super Mario Bros. Disassembly"]]></title><description><![CDATA[
<p>I imagine the original labels would have been in English.  The assembly source code I've seen for Japanese games has variables and labels in English with Japanese comments in Shift-JIS.  I would guess the choice was forced because the assembler, linker, debugger or other tools did not support Shift-JIS properly.  Often labels are restricted to 6 bytes which would be 3 Japanese characters.  Perhaps such a limit was also a factor.</p>
]]></description><pubDate>Mon, 16 Oct 2017 20:40:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=15486480</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=15486480</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15486480</guid></item><item><title><![CDATA[New comment by gp2000 in "Digging for treasure in Aladdin’s source code"]]></title><description><![CDATA[
<p>This hybrid approach was used for a series of arcade games on XArcade for the Xbox 360.  Frogger, Gauntlet, Joust, Gyruss and a bunch of others.  I think we referred to it as "reskinning".<p>Mostly it was applying higher-resolution tiles and sprites but some had particle effects added.  For instance, some exhaust smoke on the cars in Frogger.<p>My favorite was Gyruss which is somewhat like Space Invaders of Galaxian but with a 3rd person view from behind the player's ship so you see enemies come toward you in pseudo-3D.  We found that the game internally used polar coordinates and had a fair bit of code that converted those 2D and chose the right sized sprites.  Replaced all that with 3D models rendered at the same spot in space.<p>I view these techniques along a continuum where you're essentially changing the porting layer.  An emulation puts that layer at the hardware.  A hybrid approach pushes it some ways into the game.  A source code port is above the binary but some ways into the code.  A remake is at the "game design" level.</p>
]]></description><pubDate>Thu, 12 Oct 2017 20:28:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=15461053</link><dc:creator>gp2000</dc:creator><comments>https://news.ycombinator.com/item?id=15461053</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15461053</guid></item></channel></rss>