Jon Relay's Apple II Info Archives: * Zero Page Addresses * ProDOS File Types * Macintosh Computer Setups that Produce Readable ProDOS Disks * Standard Color HiRes Information * Video Display Theory * Description of Memory Areas @ I/O Memory @ Screen Holes @ Graphics Modes @ Super Serial Card DIP Switches A topic with a * will be found in part 1. A topic with an @ will be found in part 2. This file is best viewed with a monospaced font (i.e. Monaco, Courier, etc.). All topics are preceded with a ###. You can easily jump to one by searching for ### : using your newsgroup reader's/web browser's/text viewer's find command. This file is posted every two months, starting with February each year. Any input is welcome. ### Zero Page Addresses: Please note: No free space is really free when using the Sabine 9-bit Text System. $00-$05 - ??? $06-$09 - Free Space $0A-$0C - JMP to USR() User Function Routine $0D-$17 - ??? $18 - First Data Track $19 - First Data Sector $1A-$1B - Shape Pointer for DRAW $1C - Last COLOR Used $1D-$1E - Free Space $1F - ??? $20 - Left Margin (0 - 39/79, 0 is default) $21 - Width (1 - 40/80, 40 is default, 0 crashes Applesoft) $22 - Top Margin (0 - 23, 0 is default, 20 in graphics mode) $23 - Bottom Margin (0 - 23, 23 is default) $24 - Horizontal Cursor Position (0 - 39/79) $25 - Vertical Cursor Position (0 - 23) $26-$27 - Address of Byte Containing X,Y $28-$29 - Base Address of Text Cursor's Position $2A - ??? $2B - Boot Slot * 16 $2C - Lo-Res HLIN/VLIN Endpoint $2D-$2F - ??? $30 - COLOR Value * 17 $31 - ??? $32 - Text Mask ($FF = Normal, $7F = Inverse, $3F = Flashing) $33 - Prompt Character $34-$35 - ??? $36-$37 - Address of Output Routine $38-$39 - Address of Input Routine $3A-$4F - ??? $50-$51 - Result of the Conversion of the FAC to a 16-Bit Integer $52-$66 - ??? $67-$68 - Address of Beginning of BASIC Program ($0801 is default) $69-$6A - Address of Beginning of BASIC Variables $6B-$6C - Address of Beginning of BASIC Arrays $6D-$6E - Address of End of BASIC Variables $6F-$70 - Address of End of String Data $71-$72 - Address to Move String To $73-$74 - Address of Beginning of String Data $75-$76 - Current Line Number Being Executed $77-$78 - Line Number Where END or STOP or BREAK Occurred $79-$7A - Address of Line Number Being Executed $7B-$7C - Current Address of DATA $7D-$7E - Next Address of DATA $7F-$80 - Address of Input or Data $81-$82 - Last Used Variable's Name $83-$84 - Last Used Variable's Address $85-$9A - ??? $9B-$9C - Pointer for $D61A and $F7D9 $9D-$A3 - Floating Point Accumulator (FAC) $A4 - ??? $A5-$AB - Floating Point Argument Register (ARG) $AC-$AE - ??? $AF-$B0 - Address of End of BASIC Program $B1-$B6 - Subroutine to Increase the String Data Pointer $B7-$BE - Subroutine to Return the Character Pointed to by the String Data Pointer $BF-$CD - ??? $CE-$CF - Free Space $D0-$D3 - ??? $D4 - Error Code Flag $D5-$D6 - ??? $D7 - Free Space $D8 - Error Flag (Bit 7 Set if an Error Handler is Used) $D9 - ??? $DA-$DB - Line Number Where Error Occurred $DC-$DD - ??? $DE - Error Code $DF - ??? $E0-$E1 - Horizontal Coordinate of HPLOT $E2 - Vertical Coordinate of HPLOT $E3 - Free Space $E4 - HCOLOR Value (0=0, 1=42, 2=85, 3=127, 4=128, 5=170, 6=213, 7=255) $E5 - ??? $E6 - High Byte of Address of First Byte of Where HGR is Plotted $E7 - SCALE Value (0 = 256) $E8-$E9 - Address of Shape Table $EA - DRAW/XDRAW Collision Count $EB-$EF - Free Space $F0 - ??? $F1 - SPEED Value (Subtracted From 256) $F2 - ??? $F3 - Text OR Mask for Flashing Text $F4-$F5 - Address of Error Handler (Line Number after ONERR GOTO) $F6-$F8 - ??? $F9 - ROT Value $FA-$FE - Free Space $FF - Used by Applesoft's STR$ Function ### ProDOS File Types: $0 Types: General Files $00 UNK Unknown $01 BAD Bad Block File $02 PCD Pascal Code $03 PTX Pascal Text $04 TXT ASCII Text $05 PDA Pascal Data $06 BIN Binary File $07 FNT Apple III Font $08 FOT HiRes/Double HiRes File $09 BA3 Apple III BASIC Program $0A DA3 Apple III BASIC Data $0B WPF Generic Word Processor File $0C SOS SOS System File $0F DIR ProDOS Directory $1 Types: Desktop Publishing $10 RPD RPS Data $11 RPI RPS Index $12 AFD AppleFile Discard $13 AFM AppleFile Model $14 AFR AppleFile Report $15 SCL Screen Library $16 PFS PFS Document $19 ADB AppleWorks Database $1A AWP AppleWorks Word Processor $1B ASP AppleWorks Spreadsheet $2 Types: Program Code $20 TDM Desktop Manager File $21 IPS Instant Pascal Source $22 UPV UCSD Pascal Volume $29 3SD SOS Directory $2A 8SC Source Code $2B 8OB Object Code $2C 8IC Interpretted Code $8003 - Apex Program File $2D 8LD Language Data $2E P8C ProDOS 8 Code Module $4 Types: OCR $41 OCR Optical Character Recognition File $42 FTD File Type Definitions $5 Types: General File Types $50 GWP Apple IIgs Word Processor File $5445 - Teach $8001 - DeluxeWrite $8010 - AppleWorks GS $51 GSS Apple IIgs Spreadsheet File $8010 - AppleWorks GS $52 GDB Apple IIgs Database File $8010 - AppleWorks GS $8011 - AppleWorks GS Template $8013 - GSAS $53 DRW Object Oriented Graphics File $8010 - AppleWorks GS $54 GDP Apple IIgs Desktop Publishing File $8002 - GraphicWriter $8010 - AppleWorks GS $55 HMD HyperMedia $0001 - HyperCard GS $8001 - Tutor-Tech $8002 - HyperStudio $8003 - Nexus $56 EDU Educational Program Data $57 STN Stationery $58 HLP Help File $59 COM Communications File $8010 - AppleWorks GS $5A CFG Configuration File $5B ANM Animation File $5C MUM Multimedia File $5D ENT Entertainment Program File $5E DVU Development Utility File $6 Types: PC Transporter $60 PRE PC Pre-Boot $6B BIO PC BIOS $6D DVR PC Driver $6E PRE PC Pre-Boot $6F HDV PC Hard Disk Image $7 Types: Kreative Korporation $70 SN2 Sabine's Notebook 2.0 $71 KMT /Karen Torrez Tribute/ $72 SR7 /Sabrina Ramos Tribute/ $73 BAN Brenda $74 CG7 /Chelsea Green Tribute/ $75 TNJ /Tesla Jarschke Tribute/ $76 SA7 /Sumie Arnold Tribute/ $77 KES General File $78 JAP Joanna $79 CSL Chelsea $7A TME Tammy $7B TLB /Tammy Bastien Tribute/ $7C MR7 /Meri Riella Tribute/ $7D MLR Mylar City $005C - Script $C7AB - Color Table $CDEF - Character Definition $7E MMM /Margaux Mertz Tribute/ $7F JCP /Joanna Pastcan Tribute/ $8 Types: GEOS Files $80 GES System File $81 GEA Desk Accessory $82 GEO Application $83 GED Document $84 GEF Font $85 GEP Printer Driver $86 GEI Input Driver $87 GEX Auxilary Driver $8B GEC Clock Driver $8C GEK Interface Card Driver $8D GEW Formatting Data $A Types: Apple IIgs BASIC $A0 WP WordPerfect File $AB GSB Apple IIgs BASIC Program $AC TDF Apple IIgs BASIC TDF $AD BDF Apple IIgs BASIC Data $B Types: Apple IIgs Files $B0 SRC Apple IIgs Source Code $B1 OBJ Apple IIgs Object Code $B2 LIB Apple IIgs Library $B3 S16 Apple IIgs Application Program $B4 RTL Apple IIgs Runtime Library $B5 EXE Apple IIgs Shell $B6 PIF Apple IIgs Perminent INIT $B7 TIF Apple IIgs Temporary INIT $B8 NDA Apple IIgs New Desk Accessory $B9 CDA Apple IIgs Classic Desk Accessory $BA TOL Apple IIgs Tool $BB DRV Apple IIgs Device Driver $BC LDF Apple IIgs Generic Load File $4001 - Nifty List Module $4002 - Super Info Module $4004 - Twilight Module $4083 - Marinetti Link Layer Module $BD FST Apple IIgs File System Translator $BF DOC Apple IIgs Document $C Types: Graphics Files $C0 PNT Apple IIgs Packed Super HiRes $0001 - Packed Super Hi-Res $0002 - Apple Preferred Format $0003 - Packed QuickDraw II PICT $C1 PIC Apple IIgs Super HiRes $0001 - QuickDraw PICT $0002 - Super Hi-Res 3200 $C2 ANI PaintWorks Animation $C3 PAL PaintWorks Palette $C5 OOG Object-Oriented Graphics $C6 SCR Script $C7 CDV Apple IIgs Control Panel $C8 FON Apple IIgs Font $0000 - QuickDraw Bitmap Font $0001 - Pointless TrueType Font $C9 FND Apple IIgs Finder Data $CA ICN Apple IIgs Icon File $D Types: Sound Files $D5 MUS Music File $D6 INS Instrument File $D7 MDI MIDI File $D8 SND Apple IIgs Sound File $0000 - AIFF $0001 - AIFF-C $0002 - ASIF Instrument $0003 - Sound Resource $0004 - MIDI Synth Wave $8001 - HyperStudio Sound $DB DBM DB Master Document $E Types: Miscellaneous $E0 LBR Archive File $0000 - ALU $0001 - AppleSingle $0002 - AppleDouble Header $0003 - AppleDouble Data $8000 - Binary II $8001 - AppleLink ACU $8002 - ShrinkIt $E2 ATK AppleTalk Data $FFFF - EasyMount Alias $EE R16 EDASM 816 Relocatable Code $EF PAR Pascal Area $F Types: System Files $F0 CMD ProDOS Command File $F1 OVL User Defined 1 $F2 User Defined 2 $F3 User Defined 3 $F4 User Defined 4 $F5 BAT User Defined 5 $F6 User Defined 6 $F7 User Defined 7 $F8 PRG User Defined 8 $F9 P16 Apple IIgs System File $FA INT Integer BASIC Program $FB IVR Integer BASIC Variables $FC BAS Applesoft BASIC Program $FD VAR Applesoft BASIC Variables $FE REL EDASM Relocatable Code $FF SYS ProDOS System File ### Macintosh Computer Setups that Produce Readable ProDOS Disks: PowerMac 7100/66 @ 88MHz DiskCopy: fails Mac Finder: succeeds iMac 233 (Bondi rev A) @ 266MHz DiskCopy: fails Mac Finder: succeeds PowerBook 5300c DiskCopy: succeeds Mac Finder: succeeds ### Standard Color HiRes Information: On screen, every 14 columns: |G| |CT1| |CT1| |CT1| |---CT1---| |CT1| |CT1| |CT1| v v v v v v v v v v v v v v v v Column: CGB C00 C01 C02 C03 C04 C05 C06 CGB C07 C08 C09 C10 C11 C12 C13 Bit Value: 128 001 002 004 008 016 032 064 128 001 002 004 008 016 032 064 ^ ^ |G| In memory, every 2 bytes: |G| |CT2| |CT2| |CT2| |G| |CT2| |CT2| |CT2| v v v v v v v v v v v v v v v v Column: CGB C06 C05 C04 C03 C02 C01 C00 CGB C13 C12 C11 C10 C09 C08 C07 Bit Value: 128 064 032 016 008 004 002 001 128 064 032 016 008 004 002 001 ^ ^ |---------------------------CT1---------------------------| CT1 bit pairs: 00 = Black 01 = Blue or Magenta 10 = Orange or Green 11 = White CT2 bit pairs: 00 = Black 01 = Orange or Green 10 = Blue or Magenta 11 = White G (color group) bits: 0 = Black, White, Magenta, or Green 1 = Black, White, Orange, or Blue Column values are column on screen modulo 14. On the two bits that are from two different bytes, if the two bytes have different color group bits then 01 or 10 will result in some weird colors. The results I get trying to expiriment with them are often inconsistant. My first results where like this: Color Group Bits As In Memory \/ \/ 01 10 +> 01 Brown Pink +> 10 Cyan Purple | +- Bit Pair Bits Just recently, I got different results that were more consistant, but wackier than my earlier table: Bit Pair: Group Bits: Background Color: Result: 01 10 Black Purple 01 01 Black Cyan 11 10 Black Aqua 01 10 White Yellow 01 01 White Brown 11 01 White Red If you think about it for a really long time, it makes sense that: Bit Pair: Group Bits: Result: 01 10 Purple 01 01 Cyan 10 10 Yellow 10 01 Brown 11 10 Aqua 11 01 Red Which is sacraficing consistancy for being less weird. There was a program posted on comp.sys.apple2 a long time ago that put all 12 colors on a black background. Looking at it, I can find this: Bit Pair: Group Bits: Start at Column: Result: 00 00 6 Black 10 10 6 Blue 10 00 6 Magenta 10 11 6 Light Blue 10 01 6 Purple 10 10 13 Brown 10 11 13 Orange 11 10 13 Pink 01 00 6 Green 10 01 13 Yellow 11 10 6 Cyan 11 00 6 White Holger Picker posted the following table a while ago, which provides an alternative to the information at the beginning of this section: Odd Columns (1,3,5...) Even Columns (0,2,4...) 000 = Black 000 = Black 001 = Black 001 = Black 010 = Green/Orange 010 = Purple/Blue 011 = White 011 = White 100 = Black 100 = Black 101 = Purple/Blue 101 = Green/Orange 110 = White 110 = White 111 = White 111 = White He used three pixels to determine the color of the middle pixel. For an easy way out of trying to calculate colors in high-resolution graphics, you can use the following subroutines: Pix^2 Version 1: 63999 HCOLOR=ZZ : HPLOT (XX*2),(YY*2) TO (XX*2)+1,(YY*2) TO (XX*2)+1,(YY*2)+1 TO (XX*2),(YY*2)+1:RETURN Draws bulky square pixels on the screen. XX is loaded with the horizontal coordinate, a number between 0 and 139. YY is loaded with the vertical coordinate, a number between 0 and 95. ZZ is loaded with a color number, which is from 0 to 7. 0 or 4 is black, 1 is green, 2 is magenta, 3 or 7 is white, 5 is orange, and 6 is blue. Color group conflicts will occur. Pix^2 Version 2: 63999 HCOLOR=ZZ : HPLOT (XX*2),YY TO (XX*2)+1,YY : RETURN Draws rectangular pixels on the screen. XX is loaded with the horizontal coordinate, a number between 0 and 139. YY is loaded with the vertical coordinate, a number between 0 and 191. ZZ is loaded with a color number, which is from 0 to 7. 0 or 4 is black, 1 is green, 2 is magenta, 3 or 7 is white, 5 is orange, and 6 is blue. Color group conflicts will occur. Pix^2 Version 3 Beta: 63990 IF ZZ = 7 THEN ZZ = 3 63991 IF ZZ = 4 THEN ZZ = 0 63992 XX = XX*2 63993 IF ZZ <> 0 AND ZZ <> 3 THEN GOTO 63008 63994 VTAB INT(YY/8)+1:BA=((PEEK(40)+(256*PEEK(41)))-1024)+8192 63995 BA=BA+(1024*(YY-(INT(YY/8)*8)))+INT(XX/7) 63996 IF BA <> INT(BA) THEN BA = INT(BA) 63997 IF PEEK(BA) > 128 THEN ZZ = ZZ + 4 63998 XX = XX/2 63999 HCOLOR=ZZ : HPLOT (XX*2),YY TO (XX*2)+1,YY : RETURN Draws rectangular pixels on screen. XX is loaded with the horizontal coordinate, a number between 0 and 139. YY is loaded with the vertical coordinate, a number between 0 and 191. ZZ is loaded with a color number, which is from 0 to 7. 0 or 4 is black, 1 is green, 2 is magenta, 3 or 7 is white, 5 is orange, and 6 is blue. Checks the color group bit of the existing pixels so that using white or black won't change the color group bit regardless of whether you use 0, 3, 4, or 7 as the value of ZZ. Since this subroutine is in beta, don't expect it to work. These subroutines are backwards compatible. Version 2 does everything version 1 did, and version 3 does everything version 2 does. Programs that use version 1 can also use versions 2 and 3 (although the height of the picture will be shrunken down [up?]), and programs that use version 2 can also use version 3. ### Video Display Theory: This came up on comp.sys.apple2 long ago. It was on a thread about a new Apple II emulator, I think, and they needed help with high-resolution graphics. Here was my theory. (At least as I remember it. The Deja archives are temporarily unavailable, and I didn't save it.) A composite video signal has a chroma and a luma signal. The luma controls the brightness of a pixel. The chroma is actually two axes on a two-dimensional surface of color. The x axis goes from magenta to green, and the y axis goes from orange to blue. At the center of each axis is white: +-----------+ | O | O=Orange, G=Green, | | B=Blue, M=Magenta, |M W G| W=White | | | B | +-----------+ Filling in the corners, we can find the whole spectrum: +-----------+ |R O Y| R=Red, O=Orange, | | Y=Yellow, G=Green, |M W G| C=Cyan, B=Blue, | | P=Purple, M=Magenta, |P B C| W=White +-----------+ You'll notice that the extremes of each axis look like the four high-resolution graphics colors. However, Robert Munafo posted some information a while ago about the way the Apple II generates NTSC output. The actual high-resolution graphics colors are not exactly the same as the polarities of the axes. The colors generated by the Apple II are actually twelve degrees lower in phase, but it is so little of a difference since the tint setting on your monitor is probably a little off anyway. Someone, I don't remember who, replied that the hi-res color magenta was actually purple. The Apple people were confused when purple didn't fit on the color table (as was I), so they called it magenta in the documentation. It wasn't in the post (although someone did reply with it) that the color group bit of each byte of graphics data determined which axis to use for color, and the two bits of each pair of columns defined the polarity of the axis at that point. One explanation for why you get weird colors on byte boundaries was because the Apple II's composite video output wasn't exactly NTSC (or PAL). You got what was called "color bleeding." A single point of light somewhere on the screen showed a variety of colors depending on exactly where it was. The different color group bits on the bytes at the byte boundaries pushed and pulled the pixel one way or another, and that's why you get all sorts of weird colors there. The Apple IIgs has a totally different video system, but it still uses a slightly-off color-bleeding composite signal. The earlier Apple II's used TTL logic and all that off-the-shelf stuff to display video, so the signals where just switched on and off. The Apple IIgs has a complicated microchip to handle video, so it can produce all those 4096 colors you can use. With an RGB monitor, the Apple IIgs doesn't do a very good job at putting high-resolution and double high-resolution up on an RGB screen, so you get some bad colors there. Some colors show up as all black, or all white, or a different color. And, of course, my favorite; dark green shows up as a flickering green that seems to stabilize to solid green at some times. For more video display theory, try the following links: http://www.ee.washington.edu/conselec/CE/kuhn/ntsc/95x4.htm http://www.landfield.com/faqs/apple2/faq/part16/ http://www-viz.tamu.edu/faculty/parke/ends489f00/notes/sec1_4.html http://www.neutralzone.org/home/faqsys/docs/codet http://www.belle-nuit.com/archives/videoglossary.html http://www.itc-usa.com/noframe/radapclr.htm http://members.nbci.com/jrelay/download/a2info/munafo.htm ### Description of Memory Areas: { All Apple II Computers { $0000 - $00FF (0 - 255): Zero Page { $0100 - $01FF (256 - 511): 6502 Processor Stack { $0200 - $02FF (512 - 767): GETLN Line Input Buffer { $0300 - $03CF (768 - 975): Free Space for Machine Language, Shape Table, etc. { $03D0 - $03FF (976 - 1023): DOS, ProDOS, and Interrupt Vectors { $0400 - $07FF (1024 - 2047): Text Video Page and Peripheral Screenholes { $0800 - $0BFF (2048 - 3071): Text Video Page 2 or Applesoft Program and Variables { $0C00 - $1FFF (3072 - 8191): Free Space for Machine Language, Shapes, etc. { (might be overwritten if you use a lot of variables or BASIC program is long) { $2000 - $3FFF (8192 - 16383): High Resolution Graphics Page 1 { $4000 - $5FFF (16384 - 24575): High Resolution Graphics Page 2 { $6000 - $95FF (24576 - 38399): Applesoft String Data { (may have a little space free) { (some BASIC programs move the variables all the way up to $4000 or even $6000) { (Sabine's Notebook moves it all the way up to $8000!) { DOS 3.2 / 3.3 and Custom DOSes { $9600 - $9CFF (38400 - 40191): Disk I/O Buffers { $9D00 - $BFFF (40192 - 49151): DOS Routines { (memory below $9600 can also be used for disk buffers via MAXFILES command) { { ProDOS { $9600 - $99FF (38400 - 39423): BASIC.SYSTEM I/O Buffers { $9A00 - $BEFF (39424 - 48895): Currently running SYS file { $BF00 - $BFFF (48896 - 49151): ProDOS Kernel Global Page { (memory below $9600 can also be used for disk buffers by opening more files) { All Apple II Computers { $C000 - $C0FF (49152 - 49407): Soft Switches and Status Locations { Apple II Series in General { $C100 - $C7FF (49408 - 51199): Peripheral Card Memory { $C800 - $CFFF (51200 - 53247): Extended Memory for Peripheral Card in Use { { Apple IIe { $C100 - $C2FF (49408 - 49919): Extensions to System Monitor { $C300 - $C3FF (49920 - 50175): 80-Column Display Routines { $C400 - $C7FF (50176 - 51199): Self-Test Routines { $C800 - $CFFF (51200 - 53247): More 80-Column Display Routines { { Apple IIc and sometimes IIgs { $C100 - $C2FF (49408 - 49919): Serial Firmware { $C300 - $C3FF (49920 - 50175): 80-Column Firmware { $C400 - $C4FF (50176 - 50431): Mouse Firmware { $C500 - $C6FF (50432 - 50943): Floppy Disk Drive Firmware { $C700 - $C7FF (50944 - 51199): AppleTalk Firmware { $C800 - $CFFF (51200 - 53247): Extended Memory for Periph Card { Apple IIe, IIc, IIgs, and II+ with Applesoft ROM Language Card { $D000 - $F7FF (53248 - 63487): Applesoft Interpreter { $F800 - $FFFF (63488 - 65535): System Monitor { { Apple II and II+ with Integer ROM Language Card { $D000 - $D7FF (53248 - 55040): Programmer's Aid #1 ROM { $D800 - $DFFF (55041 - 57343): Empty (No RAM or ROM) { $E000 - $F7FF (57344 - 63487): Integer BASIC / Mini-Assembler / Sweet16 { $F800 - $FFFF (63488 - 65535): System Monitor { { Apple IIe, IIc, and IIgs { $D000 - $DFFF (53248 - 57343): Bank-Switched RAM (2 Banks RAM, 1 Bank ROM) { $E000 - $FFFF (57344 - 65535): Bank-Switched RAM (1 Bank RAM, 1 Bank ROM) -- _/_/_/ _/_/ _/ _/ _/ _/ Jonathyn Bet'nct _/ _/_/ _/_/ _/ _/_/ _/ _/_/_/ The Tammy Messenger _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ http://tammynet.cjb.net _/ _/_/ _/ _/ _/ _/ _/ _/ _/_/ jonrelay@napanet.net Jon Relay's Apple II Info Archives: * Zero Page Addresses * ProDOS File Types * Macintosh Computer Setups that Produce Readable ProDOS Disks * Standard Color HiRes Information * Video Display Theory * Description of Memory Areas @ I/O Memory @ Screen Holes @ Graphics Modes @ Super Serial Card DIP Switches A topic with a * will be found in part 1. A topic with an @ will be found in part 2. This file is best viewed with a monospaced font (i.e. Monaco, Courier, etc.). All topics are preceded with a ###. You can easily jump to one by searching for ### : using your newsgroup reader's/web browser's/text viewer's find command. This file is posted every two months, starting with February each year. Any input is welcome. ### I/O Memory: Comp: O = Apple II+ E = Apple IIe C = Apple IIc G = Apple IIgs Act: R = Read W = Write 7 = Bit 7 V = Value Address Name Comp Act Description C000 49152 KBD OECG R Last Key Pressed + 128 80STOREOFF ECG W Use $C002-$C005 for Aux Memory C001 49153 80STOREON ECG W Use PAGE2 for Aux Memory C002 49154 RDMAINRAM ECG W If 80STORE Off: Read Main Mem $0200-$BFFF C003 49155 RDCARDRAM ECG W If 80STORE Off: Read Aux Mem $0200-$BFFF C004 49156 WRMAINRAM ECG W If 80STORE Off: Write Main Mem $0200-$BFFF C005 49157 WRCARDRAM ECG W If 80STORE Off: Write Aux Mem $0200-$BFFF C006 49158 SETSLOTCXROM E G W Peripheral ROM ($C100-$CFFF) C007 49159 SETINTCXROM E G W Internal ROM ($C100-$CFFF) C008 49160 SETSTDZP ECG W Main Stack and Zero Page C009 49161 SETALTZP ECG W Aux Stack and Zero Page C00A 49162 SETINTC3ROM E G W ROM in Slot 3 C00B 49163 SETSLOTC3ROM E G W ROM in Aux Slot C00C 49164 CLR80VID ECG W 40 Columns C00D 49165 SET80VID ECG W 80 Columns C00E 49166 CLRALTCHAR ECG W Primary Character Set C00F 49167 SETALTCHAR ECG W Alternate Character Set C010 49168 KBDSTRB OECG WR Keyboard Strobe C011 49169 RDLCBNK2 ECG R7 Status of Selected $Dx Bank C012 49170 RDLCRAM ECG R7 Status of $Dx ROM / $Dx RAM C013 49171 RDRAMRD ECG R7 Status of Main/Aux RAM Reading C014 49172 RDRAMWRT ECG R7 Status of Main/Aux RAM Writing C015 49173 RDCXROM E G R7 Status of Periph/ROM Access RSTXINT C R Reset Mouse X0 Interrupt C016 49174 RDALTZP ECG R7 Status of Main/Aux Stack and Zero Page C017 49175 RDC3ROM E G R7 Status of Slot 3/Aux Slot ROM RSTYINT C R Reset Mouse Y0 Interrupt C018 49176 RD80STORE ECG R7 Status of $C002-$C005/PAGE2 for Aux Mem C019 49177 RDVBL E G R7 Vertical Blanking (E:1=drawing G:0=drawing) RSTVBL C R Reset Vertical Blanking Interrupt C01A 49178 RDTEXT ECG R7 Status of Text/Graphics C01B 49179 RDMIXED ECG R7 Status of Full Screen/Mixed Graphics C01C 49180 RDPAGE2 ECG R7 Status of Page 1/Page 2 C01D 49181 RDHIRES ECG R7 Status of LoRes/HiRes C01E 49182 RDALTCHAR ECG R7 Status of Primary/Alternate Character Set C01F 49183 RD80VID ECG R7 Status of 40/80 Columns C020 49184 TAPEOUT OE R Toggle Cassette Tape Output C021 49185 MONOCOLOR G W 7 Color/Mono C022 49186 TBCOLOR G V Screen Color: Low Nibble is BG, High Nibble is Text C023 49187 VGCINT G V Video Graphics Controller Interrupts: b0-2=ext,scan,1sec enable b4-7=ext,scan,1sec,VGC C024 49188 MOUSEDATA G V Mouse Data: High Bit is Button, Other Bits are Movement C025 49189 KEYMODREG G V Modifier Keys: Bit 7: Command, Bit 6: Option, Bit 5: NotUsed, Bit 4: Keypad, Bit 3: Repeat, Bit 2: Caps, Bit 1: Control, Bit 0: Shift C026 49190 DATAREG G V ADB Command/Data b0-2=# b3=valid b4=clr buf b5=reboot b6=abort b7=status C027 49191 KMSTATUS G V ADB Status: b0=cmdFull b1=mouseX b2=keyIntr b3=key b4=cmdIntr b5=data 6=mouseInt 7=mouse C028 49192 ROMBANK ???? ROM bank select toggle C029 49193 NEWVIDEO G V New Video: 129=SHR, 1=None, Bit 6=Linearize, Bit 5=BW C02B 49195 LANGSEL G Bit 3=Secondary Bit 4=50Hz Bits 5-7=Display Language C02C 49196 CHARROM ???? Addr for test mode read of character ROM C02D 49197 SLTROMSEL G Slot Register; Bits 1-7=use slot card C02E 49198 VERTCNT ???? Addr for read of video cntr bits V5-VB C02F 49199 HORIZCNT ???? Addr for read of video cntr bits VA-H0 C030 48200 SPKR OECG R Toggle Speaker C031 49201 DISKREG G Disk Interface: Bit 6=3.5 Bit 7=RWHead 1 C032 49202 SCANINT G V VGC Interrupt-Clear C033 49203 CLOCKDATA G Interface to Battery RAM (undocumented) C034 49204 CLOCKCTL G b0-3=borderColor b5=stopBit b6=read b7=start C035 49205 SHADOW G Inhibit Shadowing: Bit 6: I/O Memory, Bit 5: Alternate Display Mode, Bit 4: Auxilary HGR, Bit 3: Super HiRes, Bit 2: HiRes Page 2, Bit 1: HiRes Page 1, Bit 0: Text/LoRes C036 49206 CYAREG G Bits 0-3=Disk Detect Bit 4=Shadow All Banks Bit 7=Fast C037 49207 BMAREG G Bit 5=BW C038 49208 SCCBREG G SCC Command Channel B C039 49209 SCCAREG G SCC Command Channel A C03A 49210 SCCBDATA G SCC Data Channel B C03B 49211 SCCADATA G SCC Data Channel A C03C 49212 SOUNDCTL G V Sound Settings: Bits 0-3=Volume Bit 5=AutoIncr Bit 6=RAM Bit 7=Busy C03D 49213 SOUNDDATA G Sound Data C03E 49214 SOUNDADRL G Address Pointer L C03F 49215 SOUNDADRH G Address Pointer H C040 49216 OE R Game I/O Strobe Output RDXYMSK C R7 Read X0/Y0 Interrupt C041 49217 RDVBLMSK C R7 Read VBL Interrupt C042 49218 RDX0EDGE C R7 Read X0 Edge Selector C043 49219 RDY0EDGE C R7 Read Y0 Edge Selector C044 49220 MMDELTAX G V Mega II Mouse Delta Movement X C045 49221 MMDELTAY G V Mega II Mouse Delta Movement Y C046 49222 DIAGTYPE ???? Self or Burn-In diagdistics: Bit 7=burn-in diag INTFLAG ???? b0=IRQ b1=MMmov b2=MMbut b3=VBL b4=qsec b5=AN3 b6=mouse was down b7=mouse is down C047 49223 CLRVBLINT ???? Clear VBL Interrupt C048 49224 CLRXYINT ???? Clear MM Interrupt C048 49224 RSTXY C WR Reset X and Y Interrupts C050 49232 TXTCLR OECG WR Display Graphics C051 49233 TXTSET OECG WR Display Text C052 49234 MIXCLR OECG WR Display Full Screen C053 49235 MIXSET OECG WR Display Split Screen C054 49236 TXTPAGE1 OECG WR Display Page 1 C055 49237 TXTPAGE2 OECG WR If 80STORE Off: Display Page 2 ECG WR If 80STORE On: Read/Write Aux Display Mem C056 49238 LORES OECG WR Display LoRes Graphics C057 49239 HIRES OECG WR Display HiRes Graphics C058 49240 CLRAN0 OE G WR If IOUDIS off: Annunciator 0 Off DISXY C WR If IOUDIS on: Mask X0/Y0 Move Interrupts C059 49241 SETAN0 OE G WR If IOUDIS off: Annunciator 0 On ENBXY C WR If IOUDIS on: Allow X0/Y0 Move Interrupts C05A 49242 CLRAN1 OE G WR If IOUDIS off: Annunciator 1 Off DISVBL C WR If IOUDIS on: Disable VBL Interrupts C05B 49243 SETAN1 OE G WR If IOUDIS off: Annunciator 1 On ENVBL C WR If IOUDIS on: Enable VBL Interrupts C05C 49244 CLRAN2 OE G WR If IOUDIS off: Annunciator 2 Off X0EDGE C WR If IOUDIS on: Interrupt on X0 Rising C05D 49245 SETAN2 OE G WR If IOUDIS off: Annunciator 2 On X0EDGE C WR If IOUDIS on: Interrupt on X0 Falling C05E 49246 CLRAN3 OE G WR If IOUDIS off: Annunciator 3 Off Y0EDGE C WR If IOUDIS on: Interrupt on Y0 Rising DHIRESON ECG WR In 80-Column Mode: Double Width Graphics C05F 49247 SETAN3 OE G WR If IOUDIS off: Annunciator 3 On Y0EDGE C WR If IOUDIS on: Interrupt on Y0 Falling DHIRESOFF ECG WR In 80-Column Mode: Single Width Graphics C060 49248 OE R7 Read Cassette Input C R7 Status of 80/40 Column Switch BUTN3 G R7 Switch Input 3 C061 49249 RDBTN0 EC R7 Switch Input 0 / Open Apple C062 49250 BUTN1 E R7 Switch Input 1 / Solid Apple C063 49251 RD63 E R7 Switch Input 2 / Shift Key C R7 Bit 7 = Mouse Button Not Pressed C064 49252 PADDL0 OECG R7 Analog Input 0 C065 49253 PADDL1 OECG R7 Analog Input 1 C066 49254 PADDL2 OE G R7 Analog Input 2 RDMOUX1 C R7 Mouse Horiz Position C067 49255 PADDL3 OE G R7 Analog Input 3 RDMOUY1 C R7 Mouse Vert Position C068 49256 STATEREG G V b0=INTCXROM b1=ROMBANK b2=LCBNK2 b3=RDROM b4=RAMWRT b5=RAMRD b6=PAGE2 b7=ALTZP C06D 49261 TESTREG ???? Test Mode Bit Register C06E 49262 CLRTM ???? Clear Test Mode C06F 49263 ENTM ???? Enable Test Mode C070 49364 PTRIG E R Analog Input Reset C WR Analog Input Reset + Reset VBLINT Flag C073 49367 BANKSEL ECG W Memory Bank Select for > 128K C078 49372 C W Disable IOU Access C079 49373 C W Enable IOU Access C07E 49278 IOUDISON EC W Disable IOU RDIOUDIS EC R7 Status of IOU Disabling C07F 49279 IOUDISOFF EC W Enable IOU RDDHIRES EC R7 Status of Double HiRes C080 49280 OECG R Read RAM bank 2; no write C081 49281 ROMIN OECG RR Read ROM; write RAM bank 2 C082 49282 OECG R Read ROM; no write C083 49283 LCBANK2 OECG RR Read/write RAM bank 2 C084 49284 OECG R Read RAM bank 2; no write C085 49285 ROMIN OECG RR Read ROM; write RAM bank 2 C086 49286 OECG R Read ROM; no write C087 49287 LCBANK2 OECG RR Read/write RAM bank 2 C088 49288 OECG R Read RAM bank 1; no write C089 49289 OECG RR Read ROM; write RAM bank 1 C08A 49290 OECG R Read ROM; no write C08B 49291 OECG RR Read/write RAM bank 1 C08C 49292 OECG R Read RAM bank 1; no write C08D 49293 OECG RR Read ROM; write RAM bank 1 C08E 49294 OECG R Read ROM; no write C08F 49295 OECG RR Read/write RAM bank 1 C090--C09F slot 1 C0A0--C0AF slot 2 C0B0--C0BF slot 3 C0C0--C0CF slot 4 C0D0--C0DF slot 5 C0E0--C0EF slot 6 C0F0--C0FF slot 7 ### Screen Holes: N is the slot number a card is in. Apple II -------- $0478 1144 Slot address of card using $C800 space //c mouse: clamping minimum, lo byte $04F8 1272 //c mouse: clamping maximum, lo byte $0578 1400 //c mouse: clamping minimum, hi byte $05F8 1528 //c mouse: clamping maximum, hi byte Super Serial Card ----------------- $0478+n 1144+n Delay: b0-1=FF b2-3=LF b4-5=CR b6-7=translate option $04F8+n 1272+n Accumulator for firmware's command processor $0578+n 1400+n b0-2=cmd mode b3-5=slot to ch to b6=lc b7=terminal/CR $05F8+n 1528+n b0-6=command byte b7=zap control commands $0678+n 1656+n Error: b0=parity b1=framing b2=overrun b3=carrier b5=error $06F8+n 1784+n Modem Mode: b0-2=screen slot b3-7=$Cs00 space entry point Printer Mode: current printer width $0778+n 1912+n Modem Mode: input buffer Printer Mode: current column $07F8+n 2040+n b0=auto LF b1=comm.mode b2=keyb inp b3=chk XOFF b4=Pascal b5=ignore LF b6=enable lc/tabs b7=echo Apple IIc Serial ---------------- $0578+n 1400+n printer width $05F8+n 1528+n scratch $0678+n 1656+n b7=parsing command string $06F8+n 1784+n current command character $0778+n 1912+n b6=auto LF b7=echo $07F8+n 2040+n current printer column 80-Column Card -------------- $0478+n 1144+n address of last output routine used by firmware $04F8+n 1272+n video firmware operating mode $0578+n 1400+n horizontal cursor position $05F8+n 1528+n vertical cursor position $0678+n 1656+n character to be printed/read $06F8+n 1784+n Pascal GOTOXY X coordinate $0778+n 1912+n scratch $07F8+n 2040+n scratch Mouse Card ---------- $0478+n 1144+n X coordinate, lo byte $04F8+n 1272+n Y coordinate, lo byte $0578+n 1400+n X coordinate, hi byte $05F8+n 1528+n Y coordinate, hi byte $0778+n 1912+n status: b1=movement int b2=button int b3=VBL int b5=movement b6=still down from last b7=button down $07F8+n 2040+n mode: b0=active b1=VBL on move b2=VBL on button b3=VBL Apple IIc Auxilary Memory ------------------------- $0478 1144 printer port ACIA control reg $0479 1145 printer port ACIA command reg $047A 1146 printer port flags: b0=comm b6=auto LF b7=echo $047B 1147 printer port printer width $047C 1148 modem port ACIA control reg $047D 1149 modem port ACIA command reg $047E 1150 modem port flags: b0=comm b6=auto LF b7=echo $047F 1151 modem port line length ### Graphics Modes: .____________________________________________________________________________. |Name |Gr/Tx|Resol|Cols|AN3|NEWVIDEO|VGCINT| |---------------------------------------+-----+-----+----+---+--------+------| |40-Column Text |TEXT |IRR |40 |IRR|1 |64 | |---------------------------------------+-----+-----+----+---+--------+------| |80-Column Text |TEXT |IRR |80 |IRR|1 |64 | |---------------------------------------+-----+-----+----+---+--------+------| |Color 40-Column Text * |TEXT |IRR |40 |OFF| Not on | IIgs | |---------------------------------------+-----+-----+----+---+--------+------| |Lo-Res Graphics |GR |LOW |IRR |ON |1 |64 | |---------------------------------------+-----+-----+----+---+--------+------| |Double Lo-Res Graphics |GR |LOW |80 |OFF|1 |64 | |---------------------------------------+-----+-----+----+---+--------+------| |Lo-Res Graphics w/ HiRes Bit Patterns |GR |LOW |40 |OFF|1 |64 | |---------------------------------------+-----+-----+----+---+--------+------| |Hi-Res Graphics |GR |HIGH |IRR |ON |1 |64 | |---------------------------------------+-----+-----+----+---+--------+------| |Double Hi-Res Graphics |GR |HIGH |80 |OFF|1 |64 | |---------------------------------------+-----+-----+----+---+--------+------| |320x200 w/ 16 Colors, 16 Colors/Line, |IRR |IRR |IRR |IRR|129 |??? | | 1 Palette | | | | | | | |---------------------------------------+-----+-----+----+---+--------+------| |320x200 w/ 256 Colors; 16 Colors/Line, |IRR |IRR |IRR |IRR|129 |??? | | 16 Palettes | | | | | | | |---------------------------------------+-----+-----+----+---+--------+------| |320x200 w/ 3200 Colors; 16 Colors/Line,|IRR |IRR |IRR |IRR|129 |??? | | 200 Palettes | | | | | | | |---------------------------------------+-----+-----+----+---+--------+------| |640x200 w/ 4 Pure Colors |IRR |IRR |IRR |IRR|129 |??? | |---------------------------------------+-----+-----+----+---+--------+------| |640x200 w/ 16 Dithered Colors; 4 Colors|IRR |IRR |IRR |IRR|129 |??? | | on Odd Columns, 4 Colors on | | | | | | | | Even Columns | | | | | | | |---------------------------------------+-----+-----+----+---+--------+------| |Fill Mode |IRR |IRR |IRR |IRR|129 |??? | |---------------------------------------+-----+-----+----+---+--------+------| |640x480 @ 24b <- up to -> 1024x768 @ 8b| VIA SECOND SIGHT CARD | |---------------------------------------+------------------------------------| | * This mode only works on RGB monitors connected to AppleColor 80-column | | cards. It requires the 80-column firmware to be active, but showing 40 | | columns. It uses auxilary memory to determine the foreground and | | background colors. | '----------------------------------------------------------------------------' ### Super Serial Card DIP Switches .______________________ Switch Block #1 ______________________. |Switch number Definition | Switch number Definition| |------------------------------|------------------------------| |1 2 3 4 Baud Rate | 5 6 Mode Setting| |==============================|==============================| |ON ON ON ON Undefined | ON ON Communications| |ON ON ON OFF 50 | OFF ON Printer| |ON ON OFF ON 75 | ON OFF SIC P8 emulation| |ON ON OFF OFF 110 | OFF OFF SIC P8A emulation| |ON OFF ON ON 135 |______________________________' |ON OFF ON OFF 150 | |ON OFF OFF ON 300 | |ON OFF OFF OFF 600 | |OFF ON ON ON 1200 | |OFF ON OFF ON 2400 | |OFF ON OFF OFF 3600 | |OFF OFF ON ON 4800 | |OFF OFF ON OFF 7200 | |OFF OFF OFF ON 9600 | |OFF OFF OFF OFF 19200 | '______________________________' .______________________ Switch Block #2 _____________________________. |Switch Definition | Switch Def | Switch Definition | |---------------------|-------------|--------------------------------| |1 Data Format | 2 CR delay | 3 4 Line width/video | |=====================|=============|================================| |ON 8 data, 1 stop | ON 32 ms | ON ON 40 columns, video ON | |OFF 8 data, 2 stop | OFF none | ON OFF 72 columns, video OFF | | | | OFF ON 80 columns, video OFF | | | | OFF OFF 132 columns, video OFF| '_____________________|_____________|________________________________' .____________ Switch Block #2 cont'd __________. ._____ Handshaking _____. |Switch Definition | Switch Definition | | Switch Definition | |---------------------|------------------------| |-----------------------| |5 Linefeeds | 6 Interrupts | | 1-7/2-7 CTS | |---------------------|------------------------| |-----------------------| |ON add LF after CR | ON Interrupts on | | ON/OFF Normal (Pin 20)| |OFF don't add LFs | OFF No interrupts | | OFF/ON Alt (Pin 19)| '_____________________|________________________' '_______________________' .______________________________..________________________________________. | Connector Pin Assignments || Jumper Block Wiring | |------------------------------||----------------------------------------| | 10 Pin DB-25 Signal || SSC signal MODEM (pin) TERMINAL (pin) | | Header Connector Name ||----------------------------------------| |------------------------------|| TXD TXD 2 RXD 3 | | 1 1 Frame GND || RXD RXD 3 TXD 2 | | 2 2 TXD || RTS RTS 4 DCD 8 | | 3 3 RXD || CTS CTS 5 DCD 8 | | 4 4 RTS || DSR DSR 6 DTR 20 | | 5 5 CTS || DCD DCD 8 RTS 4 | | 6 6 DSR || DCD DCD 8 CTS 5 | | 7 19 SCTS || DTR DTR 20 DSR 6 | | 8 7 Signal GND ||----------------------------------------| | 9 20 DTR || Note that RS-232-C signals on the SSC | | 10 8 DCD || use negative-true logic; that is, they | '______________________________'| are true at 0v and false at +5 volts | '________________________________________' ._________________________________________. ._____________________. | Explanation Of Signals | | Jumper Block | | ----------------------------------------| |---------------------| | GND Ground, either Frame or Signal | | MODEM | | TXD Transmit Data | | ______________ | | RXD Receive Data | | | | | | RTS Request To Send | | | /\ | | | CTS Clear To Send | | | /__\ | | | DSR Data Set Ready | | |______________| | | SCTS Secondary CTS | | | | DTR Data Terminal Ready | | TERMINAL | | DCD Data Carrier Detect | | (Printer) | '_________________________________________' '_____________________' Pins 1-7 and 2-7 are set together to determine the SSC pin to be read for the Hardware Handshaking signal. Generally set to monitor Pin #20. Common Configurations: [Don't Forget The JUMPER Block] Hi Speed Modem ImageWriter I/II 1234567 1234567 1234567 1234567 ON XXXXXX XXXXXX X XX X XX OFF X X XXX X XX XX -- _/_/_/ _/_/ _/ _/ _/ _/ Jonathyn Bet'nct _/ _/_/ _/_/ _/ _/_/ _/ _/_/_/ The Tammy Messenger _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ http://tammynet.cjb.net _/ _/_/ _/ _/ _/ _/ _/ _/ _/_/ jonrelay@napanet.net