The Stack Overflow podcast is back! Listen to an interview with our new CEO.
110

One use is as a copyright mechanism. Many distributors would steal/copy programs and sell pirate or derivative copies, by changing the text strings inside the code and reordering the blocks, it was hard to prove the code had been stolen. Placing noops of different types you could put a signature sequence which was much easier to detect and hard to hide. A ...


86

This is most certainly a myth. There was no conspiracy by Steve Jobs or Apple to prevent third-parties from engaging with the ecosystem that would eventually flourish for Classic Macintosh applications. Interestingly, one of the earliest, significant, 3rd party applications to be released for the Macintosh was Microsoft Word in 1985. Microsoft had already ...


82

It varied. There was no single method. Some people used assemblers on the target machine, others used cross-development tools. As an example of a large product for an 8-bit machine, I worked on the BitStik CAD software for Apple II and BBC Micro systems from 1984 to 1986. That used Apple II machines with Z80 CP/M cards for coding (with WordStar) and ...


70

According to Wikipedia, the first assembly language was developed in 1947 by Kathleen Booth (née Britten). The language doesn’t look anything like “modern” assembly though (see the end of this paper); it’s more a mathematical representation of computer operations. The first mnemonic-based assembler was developed by Maurice Wilkes and David Wheeler for the ...


68

The NES was also from the era where some sound and graphics resources were also executable code. (Typically, this worked the other way around. Identify a needed sound and listen to chunks of the binary to find a reasonable candidate.) Injecting NOPs can improve the look or sound derived from a section of executable. Example: "One of the more-challenging ...


57

Interestingly enough, I stumbled in a related article, that hints firstly the (cross)development at Sinclair was made on CP/M machines, (which corroborates the Matthew Smith Manic Miner development in the TRS 80 reference on the OP question), and later on in CP/M emulated under a VAX for (re)using the original binary (cross)toolchain. At Sinclair, a £60,...


52

This is quite a wide-ranging question. There are some resources online which help: Jonathan Cauldwell, author of various Spectrum hits, has a How to write games for the Spectrum" guide, which seems to mainly cover modern Speccy development. The Oliver Twins (authors of many Codemasters-published titles back in the day) detail some of their development ...


46

My previous research into retrocomputer OS updates has led me to the following list. For each retrocomputer OS, the date and version of the latest update released at time of posting is included. The link for farther information about the update is also included. ProDOS 8 for Apple II, originally released Jan 1983 ProDOS v2.4.2 (Jan 2018) GS/OS for ...


38

In my view, the brief popularity of BASIC in the 1980s is directly related to the popularity of Javascript today - Simply, it's the Runtime that is Everywhere. That is what BASIC was back then. During the home computer revolution of the 1980s, every new system had to at least have a viable claim to be useful for something in terms of software. By providing ...


37

The "Basic Programming" cartridge for the Atari 2600 came out in 1980 and it supports all of those except the first one. It had windows for the program, stack, variables, and output which could individually switched on and off (the cartridge would vertically stack as many enabled windows as would fit, stopping when all enabled windows were shown or it ...


37

It varies machine to machine; at the simplest end is the Neo Geo — its 68000 and Z80 have completely independent buses. You write one program for the 68000 and one for the Z80 and a single pipe of communication joins the two: post a byte to the Z80 and it'll trigger an NMI; the Z80 can read the command byte from a certain port and write a response to another,...


36

This is done by changing the scroll mid-screen. This is what the nametables look like on scanline 30 in Super Mario Bros, with the scroll shown: The horizontal scroll is 0 (you can barely see the white line on the left side). Here is the same image on scanline 31: Now the horizontal scroll is at the left edge of the visible area. The PPU draws the ...


34

I'm just speculating here, but one possible reason for using a 2-byte NOP would be if you wanted to change an existing 2-byte instruction into a NOP (to fix a bug, for instance), without changing the byte count for the instruction. (An undocumented 2-byte NOP might execute more quickly than two standard 1-byte NOPs in succession.) You might do this to ...


33

The simple answer is that early operating systems for the systems you mention did not provide those features. Apple DOS, for example, makes no use of interrupts, and has no concept of processes or memory protection. Nor does DOS have any concept of hardware drivers, as it includes support to drive the Disk II (a deep assumption in DOS) and nothing else. ...


31

The premise of his argument was that Apple could have ruled the world with the Macintosh (as in, Windows/IBM Compatibles wouldn't have had a 90% or whatever market share) but Steve Jobs was just too hard headed and wouldn't let anyone, except maybe Adobe, develop for it. This is actually a distortion of the real argument. Apple never stopped other ...


31

This had a lot of drawbacks, like the limited screen size, the slow Disk I/O, the limited RAM needed for the tools and your own code, etc. Those are just drawbacks of having a slower or less capable computer. As that was the norm, I don't think anyone thought much of it. Even considering that, a lot of that may be alleviated by a simple setup involving a ...


30

A mistake? The instruction $89 on the 6502 is a two-byte NOP. Based on adjacent instructions in the opcode matrix, especially LDA #ii ($A9 ii), it would have been STA #ii, a store to an immediate value, which makes no sense. On the 65C02, this instruction is changed to BIT #ii, which almost behaves as a two-byte NOP. One hypothesis is that a programmer ...


25

For "home" computer systems such as the Apple II, the "operating system" wasn't anything like a modern one with processes and device drivers and so on; by the standards of modern OSes there wasn't really one at all. As a warning: all these explanations (long as they are) are for the most part considerably simplified. This answer is intended to give you the ...


23

As an addition to Stephen's extensive list, Zuse's 'Planfertigungsteil' (a modern translation might be Program Manufacturing Device) as implemented in 1942-1945 for the Z4 computer might be worth mentioning. While not a program, but a hardware device, it allowed the use of abstract operation names as well as symbolic addresses. There was even functionality ...


22

The answer depends on the version. CP/M 2.2 did not support any loadable device drivers. There simply was no provisioning to do that. Originally, the in-built device drivers were limited to storage, console, and serial drivers. The system vendor could extend the BIOS with new devices, but that was fixed during the system build and nothing was loadable on ...


21

The first set of Inside Macintosh books was about 1000 pages of documentation covering everything you needed to write a Macintosh application, and was available from the beginning. It didn't only cover the APIs, but also gave advice on how to design the user interface, since it was one of the first GUIs. Folklore.org has a story about the process of writing ...


21

BBC BASIC: inline assembly First one that comes to mind would be the BBC BASIC family. Beside many great features to access the OS, Assembly code could be directly inserted. It would be assembled right between the BASIC lines before and after. 10 P%=8000 : REM set Assembly location 20 [ 30 JSR some_function 40 ] 50 CALL 8000 : REM now execute it The ...


19

From a UK/Z80-based perspective: More than a few games were published using little more than a ZX Spectrum, a tape recorder, a copy of The Complete Spectrum ROM Disassembly borrowed from the public library and a taped copy of HiSoft Devpac. These, along with binders of handwritten notes and squared paper for graphics, and more cassette tapes than you can ...


19

I remember a friend of mine who did a lot of C64 coding. I distinctly remember seeing him writing out the assembly mnemonics on a lined notepad, then working out what the hex codes were for each instruction, then writing a BASIC program to POKE them into memory before running them. He did eventually get a disk assembler (store a text file on a floppy disk,...


19

So, nowadays, you'd have to be crazy not to use a PC and some nice cross-development tools when targeting these old machines. To start with, I still like to use my IIgs (or IIc-plus) when coding for the Apple II. Both are quite fast machines with more than enough memory to do the job. After all, editing source text doesn't get faster with a mouse and many ...


18

In my view, QuickBASIC caused the demise of GW-BASIC/BASIC(A). Microsoft had essentially ceased further development of GW-BASIC when they changed their focus to compiled BASIC in the mid-1980's: note that GW-BASIC never got VGA support, and Microsoft replaced it with QBASIC (a stripped-down version of QuickBASIC with just the interpreter) in MS-DOS 5+. As ...


17

You are nuts, unfortunately. The thing that's now called GIT didn't exist at all until Linus invented it after experience with BitKeeper, and thinking about distributed version control. Linux didn't start using BitKeeper for the official mainline source tree until 2002, but some developers must have been using it before that. BitKeeper itself didn't exist ...


17

We talk about the late 1970s and mainstream 6502 machines, right? It wasn't so much that programs run under OS control as that OS was a support function to Programs. More like what we would today see as a standard library with routines supporting simple I/O abstraction plus basic file handling on the user side and hard coded drivers within. Some, like ...


16

Many, many Spectrum games were written with Devpac, on the Spectrum itself. Devpac was written by HiSoft, where I worked during this period (on the 68k Devpac, I never worked on the Z80 stuff myself). HiSoft themselves developed their Z80 software on CP/M machines (using their own Z80 assembler), though for the life of me I cannot remember how they got the ...


16

Fuzzy logic was a bunch of mathematical techniques or algorithms, popularized in the 1970’s by Lotfi Zadeh, former chairman of the U.C. Berkeley EECS department. Forms of it depended on fuzzy sets, where set membership or logic state could be multi-valued or statistical, rather than just a binary 1 or 0. In some ways, fuzzy logic is a distant ancestor of ...


Only top voted, non community-wiki answers of a minimum length are eligible