8 ms·
The Complete Spectrum ROM Disassembly
- acqq 6y agoThe original book presenting the disassembly was: https://www.abebooks.co.uk/9780861611164/Complete-Spectrum-ROM-Disassembly-Logan-0861611160/plp https://www.abebooks.co.uk/9780861611164/Complete-Spectrum-R... by Dr Ian Logan and Dr Frank O'Hara, 1983 published by Melbourne House, here is the scan of their catalog from these times: http://www.ourdigitalheritage.org/archive/playitagain/wp-content/uploads/melbourne-catalog.pdf http://www.ourdigitalheritage.org/archive/playitagain/wp-con... I see in the changelog of this project: https://speccy.xyz/rom/reference/changelog.html https://speccy.xyz/rom/reference/changelog.html "20160709 The disassembly is now 'complete'. - Added annotations from The Complete Spectrum ROM Disassembly by Dr Ian Logan and Dr Frank O'Hara" The interesting aspect of this online version is its relation to https://skoolkit.ca/ https://skoolkit.ca/ https://skoolkit.ca/docs/skoolkit/whatis.html https://skoolkit.ca/docs/skoolkit/whatis.html
- stevekemp 6y agoI know that Melbourne house was a (book) publisher, but mostly I think of them as the publisher of software: https://www.filfre.net/2012/11/the-hobbit/ https://www.filfre.net/2012/11/the-hobbit/
- klelatti 6y agoThis is awesome. I still have a copy of the original book from 1983 on my bookshelf! This looks like a faithful reproduction with some added features to make easier to use. Looking forward to browsing some of the other code linked to from the site - e.g. Manic Miner which was a particular favourite. A couple of points about the Spectrum ROM. - Spectrum BASIC was very slow especially compared to BBC Basic. I think that this was partly due to the constraints of having to fit everything into 16k vs 32k for the BBC - so code was optimised for size rather than speed. - It included a stack based VM for floating point operations which I think was again mainly to reduce the code size (one byte for each operation rather than three bytes for a subroutine call). Would seem appropriate to give credit to the main author of the code, Steve Vickers [1], who went on to found Jupiter Computing, makers of the Jupiter Ace. [1] https://web.archive.org/web/20110516082258/http://www.sincuser.f9.co.uk/004/newbiz.htm https://web.archive.org/web/20110516082258/http://www.sincus... edit: added Steve Vickers credit.
- acqq 6y ago> Spectrum BASIC was very slow especially compared to BBC Basic. Yes. The commercial games were all assembly anyway. The BASIC was just to get the idea what is possible, assembly to achieve the speed. > a stack based VM for floating point operation Of course, even Intel 8087 FPU chip and all the FPU operations is x86 before the introduction of SSE2 were done based on the stack based code and operations. Stack based calculations indeed allow amazing code density.
- rahimnathwani 6y agoNot quite all commercial games used assembly. I remember playing and modifying this game, which was written in BASIC: https://en.m.wikipedia.org/wiki/Millionaire_(video_game) https://en.m.wikipedia.org/wiki/Millionaire_(video_game)
- tromp 6y agoI just looked at my bookshelf and found it standing next to "Spectrum machine language for the absolute beginner" edited by William Tang, also by Melbourne House Publishers. Good memories...
- Theodores 6y agoThe Spectrum used the CPU and the ULA for everything. This resulted in a cheaper price for the machine. Meanwhile the BBC had actual hardware. As an example a simple beep would tie up CPU cycles on the Spectrum whereas the BBC micro could define a sound envelope for something more than a beep and hand that off to the AY-8192 sound chip. The Z80 had plenty of features that the BBC micro's 6502 did not have, so the code should have been quicker with fewer CPU cycles used and fewer lines of code. But the lack of supporting hardware negated this gain. BBC BASIC was also a more complete implementation of the language. So any code written in BASIC was more efficient just because you didn't have to use your own BASIC workarounds. Being able to drop into assembly language also helped, the Spectrum lacked this option to truly turbo charge your code. The BBC used 16k for BASIC in ROM and had 16k for the OS. This enabled ROMs to be swapped out so you could run BCPL or another ROM, e.g. Fortran. The Spectrum had BASIC and the OS in 16k with 48k available for RAM. The BBC could use more than 32k of RAM if installed, as per the later Master system that used bank switching. I am not familiar with the code but I would be surprised if the BBC Basic ROM was anything less than a work of genius concise code. Every byte counted in those days regardless of what home computer you were programming for.
- beagle3 6y agoHa! I couldn’t get this one in the local store in 1984, I had to do with [0], which was inferior although still very helpful. When I sort through my boxes in storage I suspect I’ll find it. [0] https://www.computinghistory.org.uk/det/41998/The-Spectrum-Machine-Code-Reference-Guide-Microdrive-Interface-1-Complete-ROM-Disassembly/ https://www.computinghistory.org.uk/det/41998/The-Spectrum-M... edit: I originally wrote that the author was Rodney Zacks but was mistaken -- googling found that it's by Richard Ross-Langley
- rwmj 6y agoRodney Zaks wrote the definitive guide to the Z80: https://en.wikipedia.org/wiki/Programming_the_Z80 https://en.wikipedia.org/wiki/Programming_the_Z80
- stevekemp 6y agoI have that book, even 30 years later. I've been referring to it a recently, while using an Arduino to drive a Z80 chip (pretending to be I/O ports, and RAM).
- canada_dry 6y agoI read this book before I learned to drive... it taught me more about computer basics (e.g. how the address and data bus work) than University did many years later!
- samsaga2 6y agoThere is no copyright problems with this?
- nineteen999 6y agoWho is going to try and enforce the copyright in 2020? BSkyB?
- neilwilson 6y agoMy favourite part of Spectrum basic was that everything was an expression. Go to 23*N
- fasteo 6y agoGood times indeed ! Off topic. Little quiz: RANDOMIZE USR 0 What for ?
- klelatti 6y agoShortest number of keypresses for a system reset?
- fasteo 6y agobingo !
- klelatti 6y agoI remember trying to write machine code on my Speccy and it seemed that 99% of attempted runs resulted in a system reset. Always assumed that the professional games writers were using a CP/M machine or something similar with proper debugging support!
- pjmlp 6y agoIndeed, as you can find out by magazines like RetroGaming, many were using 16 or 32 bit machines and then deploying into the Spectrum.
- beardyw 6y agoHa, I thought that must be true at the time. It convinced me not to persevere. Good to hear I was right.
- pjmlp 6y agoIf I remember correctly most developers could only afford such systems after slowly establishing themselves, and they weren't cheap for 80's money. So preservance using what the 8bit systems offered was a must anyway.
- nickt 6y agoI’ve just picked up a copy of “The ZX Spectrum ULA: How to design a microcomputer“ by Chris Smith with makes a good companion read to this, though with the focus (obviously) being on the ULA. http://www.zxdesign.info/book/ http://www.zxdesign.info/book/
- jacquesm 6y agoI did something like this with a friend for the TRS80 Color Computer / Dragon 32, we found some really neat stuff in there, for instance how to enable the upper 32 K RAM. Those were interesting times in the sense that it was possible to know the function of every instruction present in the memory of your computer.