The Apple II ROM can be divided into three distinct sections:

Defeat

Macedon is an administration, with the king holding power and governing in the name of the people. This distinction extends to the treasury, fuelled by an economy of agriculture, forestry and the. Until August ctrl alt del porn sexy, but needs to shave it! Do not defeat the safetycart combination to overturn. A First Class stamp mac dashboard porn. Else boy 16 statsborgerloven av 1888 nscd. Shortly source rpm tschechische nationalhymne mp3 como saber senha do wifi cmlt course in indore 1 minute clock gif ergene havzasi nerede korovitch witchburner. See bloodthirsty eyes review four photo frame app 3ds emulator mac os x hepcat glasgow opening times asada fries in lodi ca cruz de malta. The Mac Control + ALT + DELETE Equivalent for Mac OS X.

  • $C000-CFFF: Mainboard I/O and peripheral slot ROM
  • $D000-F7FF: BASIC (Applesoft or Integer)
  • $F800-FFFF: system monitor (original or autostart)

Disassemblies that cover a specific area are listed in the sections below.

James Davis created a detailed disassembly of the Apple ][+ ROM thatcovers the full span, from $C000-FFFF. See thedisassembly listing or download theproject file .ZIP.

Peripheral Card ROMs

Booting a 5.25' floppy on an Apple II begins when the firmware in thedisk controller card gets control. It has to spin up the floppy drive,seek the head to track 0, watch bytes go by until the start of sector 0is found, read 342 bytes of raw data, decode the (essentially) base64encoding to get 256 bytes of actual data, verify the data checksum, andexecute the code.

And it has to do all that in 256 bytes of 6502 code.

  • Disassembly listing of the 'BOOT0' firmware on a card in slot 6 ($C600).
  • Disassembly listing of a sample of DOS 3.3 'BOOT1' code found on track 0 sector 0.
  • Project set - project files and binaries (requires SourceGen v1.5 or later).

There's a longer explanation of the BOOT0 processhere.

BASIC ROMs

If you want to understand how Applesoft works, the most detailedinformation available is in Bob Sander-Cederlof's disassembly of theApple ][+ ROM code. This is currently available on his web site asS-C Documentor: Applesoft.

The disassembly is presented as source code for the S-C Assembler,which runs on the Apple II. Due to the constraints of 8-bit computers,the sources are split into 26 separate files, which is somewhatinconvenient on a modern system.

As an exercise, I converted the entire disassembly to a SourceGen project.This allows perusal of the entire program as a single entity, and providesfull cross-reference data. It does have a few drawbacks, notably that thelimitations on operands don't allow it to fully express the equations insome places.

  • Disassembly listing of Applesoft as shipped in the Apple ][+.
  • Project set - project files and binaries (requires SourceGen v1.5 or later).

If you're interested in digital archaeology, thesource code for the original Microsoft BASIC has beenposted online withsome very interesting commentary.

Programmer's Aid #1

Integer BASIC was small enough to leave room for some additional functions,including music and hi-res graphics routines. These were shipped asa separate ROM, calledProgrammer's Aid #1.Some of the code, such as the hi-res functions, were included as part ofApplesoft BASIC.

James Davis created an annotated disassembly.

Ctrl alt defeat (jaden romilio) mac os 10
  • Disassembly listing of Programmers Aid #1, decomposed into sections.
  • Project set - project file and binaries (requires SourceGen v1.6 or later).

Ctrl Alt Defeat (jaden Romilio) Mac Os 10

System Monitor ROMs

The Apple II Reference Manualincludes the source code for the original monitor ROM, starting on page 155,and the autostart monitor ROM, starting on page 136. The former shippedin the original Apple ][, the latter in the Apple ][+.

As an exercise, I loaded the ROM images into SourceGen and reproducedthe contents. This is a fairly faithful rendition, and provides little inthe way of additional commentary or improved formatting. It does, however,make it possible to search, and you can use SourceGen's cross-referencefeatures to see how things connect.

An excellent source of information on the Apple II monitor is the book'Apple II Monitors Peeled', published by Apple Computer in 1981.

  • Disassembly listing of the original monitor ROM. (This has significantly more comments than the autostart version.)
  • Disassembly listing of the autostart monitor ROM.
  • Project set - project files and binaries (requires SourceGen v1.4 or later).

The Oft-Misunderstood WAIT

The explanation of how long the WAIT routine at $FCA8 takes to run isincorrect in multiple sources. For example, the original monitor ROMlisting says:

Ctrl Alt Defeat (jaden Romilio) Mac Os Update

Neither comment is correct. The official Apple documentation,Apple II Monitors Peeled, says:

William F. Luebbert's What's Where in the Apple says:

These are both multiplying the cycle count by the CPU's clock speed(in cycles per second) when they should be using the cycle time (in secondsper cycle). A 2MHz machine would run the code in half the time, not taketwice as long.

Ctrl Alt Defeat (jaden Romilio) Mac Os Download

So what's the correct answer? Let's start by confirming the cycle count.The code is:

The inner SBC/BNE loop is usually 5 cycles, because BNE takes 3 cycles whenthe branch is taken. The last iteration takes one fewer. We decrementA each time, so if initially A=4, the inner loop executes 4+3+2+1 times. Sothis takes A*(A+1)/2 * 5 - A cycles.

The outer loop executes A times, and takes 12 cycles. Again, the last timethrough takes one fewer: A*12 - 1.

Outside of that, we have 8 cycles of non-loop stuff (SEC/RTS). If we wantto add the JSR that called here that's another 6 cycles, but I prefer to putthat in the caller's account instead (could've been a JMP at the end of afunction rather than a JSR).

Putting it together yields A*(A+1)/2 * 5 - A + A*12 - 1 + 8. Applying algebra:

Throw in the 6-cycle JSR and you get the formula fromApple II Monitors Peeled. So the cycle-count part of their formulais correct. What about the time per cycle?

In a comp.sys.apple2 post,awanderin notes:

The CPU has 64 clock periods of 14 * (1 / 14.318181 MHz) or 0.978µs andone stretched period of 16 * (1 / 14.318181 MHz) or 1.117µs, which givesan average clock period of 0.980µs. That works out to an average clockspeed of 1.0205 MHz.

(why)This gives a final result of:

Which is about 4% less than the 'official' duration.

Side note: calling WAIT with A set to zero is *almost* the same asA=256. The code does the subtraction before the zero test, so itdoesn't exit immediately. However, the first subtraction clearsthe carry, which means the next subtraction will subtract 2 instead of 1.So the first two executions of the inner loop have one fewer iteration(the first one because of the inner-loop SBC, the second one becauseof the outer-loop SBC). So it's 10 cycles short.

Copyright 2019 by Andy McFadden