TITLE 'The ATARI Translator ---------------------'
SUBTTL 'Program Identification and Revision History'
; ATARI Translator
; Version 1
; September 20, 1983
; This auto-booting diskette installs an ATARI 800 Operating
; System (Revision B) in RAM "under" the ROM-based O.S. in
; an XL-line computer. It exists to allow consumers to run
; most 3rd party software which would otherwise fail to exe-
; cute on the XL computers due to "violations" of the rules
; for proper Operating System usage. It is NOT meant to en-
; courage continued disregard for the stated O.S. guidelines
; by independent software vendors.
; Once this disk has been loaded, the user is prompted to
; remove it and insert the application diskette (or cassette)
; and press the [SELECT] key. When this occurs the system
; undertakes a COLD START in the new, RAM-based O.S. envir-
; onment. For all intents and purposes, the machine should
; then look exactly like an ATARI 800 (with the few caveats
; outlined below) and the program should boot and run fine.
; In order to properly service a [RESET]-triggered WARM START,
; the RAM-based O.S. has been modified to continually "watch"
; the contents of the DOSINI vector. When/if the application
; sets this vector the O.S. saves the contents and steals it
; back so that it always points to some code which re-enables
; the soft O.S. upon [RESET]. A normal WARM START is then
; processed by the soft O.S. This [RESET] key handling only
; works for applications which do not themselves jump through
; DOSINI. Side 'B' of the TRANSLATOR diskette has been config-
; ured to allow programs of this class (ie. any which boot the
; 850 Interface Module) to run properly. However, in this case
; the [RESET] key will not reselect the RAM-based O.S.
; The Translator assumes the following conditions for proper
; + 64K RAM system (ie. 600XL w/expansion module)
; + The application does not write to PORTB ($D301)
; + IRQs and NMIs are not permanently disabled by the
; application (or [RESET] may not function correctly)
; + On a 1450XLD, application is booted from SIO-based disk
; + Application does not alter locations $0160 thru $0170
; + Application does not expect RAM in 4K block at $C000
; By configuring the system as an ATARI 800, the application
; will not be able to take advantage of certain XL-specific
; features, such as function keys F1-F4, the HELP key, PBI
; peripheral devices, etc.
; MODS: Joe Miller Add graphics and code for [RESET] 83-09-15
; Greg Riker Original version 83-03-20
SUBTTL 'Macro Definitions'
%L LDA DOSINI+1 ;If DOSINI high byte has changed
CMP #high RAMLINK
STA SVDINI+1 ; Save new high byte
LDA #high RAMLINK
STA DOSINI+1 ; Replace w/WARM START trap address
?X%K LDA DOSINI ;If DOSINI low byte has changed
CMP #low RAMLINK
STA SVDINI ; Save application's low byte
LDA #low RAMLINK
STA DOSINI ; Restore WARM START trap address
PATCH MACRO DEST,SOURCE,COUNT
%L LDA #low %1 ;Copy 'COUNT' bytes from 'SOURCE' to 'DEST'
LDA #high %1
LDA #low %2
LDA #high %2
LDA #low %3
?Z%K LDA (SOURCE),Y
LDA #high %3
INC SOURCE+1 ;NOTE: special case for O.S. copy
RESET SET *O ;Set conditional assembly parameter
; This is the TRANSLATOR mainline.
; It activates a textual prompt on the display and waits
; for the [SELECT] keypress. When [SELECT] is pressed,
; The XL O.S. is swapped out and the 400/800 Rev. B. O.S.
; is copied into RAM in its place. A few key patches are
; made to the RAM-based O.S. and WARM START recovery code
; is hidden in RAM at $CFxx. When this is done, a COLD
; START is invoked by the newly installed O.S.
SWAPOS LDA DLJMP ;Move display list 'JMP' address
STA DLJ ;Into zero page (for indirect STA)
BCC TXTON ;If Cartridge (or BASIC) not present, then
LDX #low CRTLEN
LDA #0 ; Repeat
NOCART STA CARTIN,X ; Remove 'Cart. Present' message
BPL NOCART ; Until all characters removed
TXTON LDA #1
STA TXTFLG ;Enable prompt message (via VBL)
SELECT LDA #8 ;Repeat
STA CONSOL ; Convention for reading CONSOL keys
LDA CONSOL ; Read CONSOL keys
BNE SELECT ;Until [SELECT] pressed
STA SDMCTL ;Disable screen DMA
STA NMIEN ;Disable all interrupts
LDA PORTB ;Load current PORTB PIA status
AND #$FE ;Disable O.S. ROM (leave BASIC unchanged)
PHA ;Hold that thought for a moment
; Install REV B. O.S. Patches -------------------------
PATCH $D800,OSOBJ,$2800 ;Copy Rev B. O.S. into RAM
PATCH RAMSCAN,PC0CODE,PC0LEN ;Copy O.S. patches to page $Cx
PATCH $F26F,PATSIZ,3 ;SPECL ram sizing patch
; Repoint the JMP (DOSINI) to our vector --------------
LDA #low SVDINI ; New vector for disk-booted init
LDA #high SVDINI
; Save a few XL-O.S. WARM START descriminator bytes ----
PLA ;Reload current PORTB PIA status
STA SVPORTB ;Save it for WARM START restoration
LDA GINTLK ;Save Cartridge interlock flags
LDA CARTCK ;Save Cartridge checksum (if needed)
LDX #2 ;Save XL O.S. power-up test bytes
RECON LDA PUPBT1,X
STA SVPUCHK,X ;for WARM START power-up check in XL
DEX ;(these are restored in TROJAN)
; Finally, startup the RAM-based O.S. -----------------
JMP COLDSV ;Invoke Rev. B O.S. COLD START
SUBTTL 'Patches and WARM START Linkage'
; These 5 lines are PATCHed into the O.S. -----------+
PATIRQ JMP DSCAN1 ;IRQ 'DOSINI' monitor |
PATNMI JMP DSCAN2 ;NMI 'DOSINI' monitor |
PATROJ JMP TROJAN ;Hides routine in stack |
PATSIZ JMP SIZRAM ;Limits RAMSIZ to $C0 |
PATCLD JSR COLDIN ;Special-case 'DOSINI' chk |
; They are the only run-time changes to the O.S. ----+
; The following code is 'safed' in RAM at $Cxxx ----------------+
; -------------- This code, in turn, is moved into the stack,
; where (hopefully) it will remain untouched by
; normal execution of the application. It is
; needed to reselect the RAM O.S. on [RESET] --+
STKCODE ; |
SEI ;Disallow interrupts for switchback |
LDA #$FE ;Reestablish access to data at $Cxxx |
STA PORTB ;By momentarily deselecting ROM O.S. |
LDA SVPORTB ;Load previously saved PORTB status |
STA PORTB ;Reconfigure memory/disable ROM O.S. |
JMP WARMSV ;Re-invoke WARM START --> |
STKLEN EQU * - STKCODE ; |
; -------------- End of Stack Usage -------------------------+
; The 'trojan' instructions are executed just after memory
; is cleared after both a COLD or WARM start in the 800 O.S.
; It deposits the above routine in the stack and restores
; some key values needed by the XL O.S. to descriminate be-
; tween a WARM and COLD start upon the user pressing [RESET].
TROJAN PATCH RAMLINK,STKCODE,STKLEN
LDA SVINTLK ;Restore XL-O.S. control bytes
LDA #2 ;Complete 'patched' code
JMP $F177 ;Return to O.S. initialization code
; Storage area for key TRANSLATOR variables --------------------+
SVDINI DS 2 ;Application's DOSINI saved here |
SVPORTB DS 1 ;COLD START PORTB status saved here |
SVINTLK DS 1 ;Cartridge interlock flag saved here |
SVCRTCK DS 1 ;Cartridge checksum saved here |
SVPUCHK DS 3 ;O.S. WARM START test bytes saved here |
; The above bytes should not be touched by the application -----+
; This ensures the O.S. stops sizing RAM at $C000 ---------------
SIZRAM CLC ;Patch to O.S. RAM sizing code
CMP #$C0 ;Stop scan at $C000
; These routines 'WATCH' for the application stealing the
; DOSINI vector. If that happens, the new value is saved
; at SVDINI and DOSINI is re-stuffed with a vector to the
; [RESET] recovery code hidden in page 1.
COLDIN WATCH ;Special case for 1 boot sector disks
DSCAN1 STA IRQEN ;Low-level IRQ patch
DSCAN2 WATCH ;VBLANK NMI patch
CPYRT DB 'Copyright 1983 ATARI, Inc.'
PC0LEN EQU * - PC0CODE
; This ends the code stored in $Cxxx ---------------------------+
SUBTTL 'End --------------------------------------'
I only have a mockup console and a solid resin joystick, as for electronics, I've yet to run across any schematic or electronics for the 3200... yet
I don't think anyone has a 3200. AFAIK they only had two games done for it before it was scrapped (a Mouse Trap type game and something else). I've asked about it before, but there doesn't seem to be much info on it other than it was a 10-bit system (like the Intelli) and apperently wasn't that big of an improvement over the 2600.
Can you do me a favor, can you give me the side dimensions of the unit, specifically the base depth and the monitor side depth?
I built a custom Colecovision kiosk (actually 2, I have another unit about 80% finished in the garage) and I'd like to get more specific info, I just built my own based on a photo and just guessed at the dimensions:
While going thru my 2600 collection the other day, I have some (not many) games boxed with instructions. I happend to notice that one of the boxes, Realsports Volleyball, is in a grey box with no color at all on it; sort of a black and white or mono box.
Is there a story on why it was released in a non-color box (like a cost cutting plan)? Are there other games that were released this way?
That's called: "Hi, I'm a Tramiel, I'm sitting on a boatload of old stock, lemme sell it, but do it on the mega cheap, so non-colored boxes are printed up to package the old stock to sell to squeeze out additional revenue from every nook and cranny within the firms assets"
Lately I've had the opportunity to pick up the 5200's arch-nemesis the Colecovision and I've got a fair amount of titles and some interesting things:
Everyone bitches and moans about the 5200 controllers. Well the fire buttons are definitely bad, they should never have been so small or rubbery, bad choice.
The Coleco controllers don't seem to fair any better then the 5200's in comfort and the short stalk is not as comfortable to use as the 5200 joystick.
One thing that definitely is a major plus is the pause button the 5200 controller.
Now, the Colecovision did outnumber the 5200 in peripherals, certainly the Super Action Controllers were cool, the Driving Controller was great and a major missing item from Atari's periperhal lineup.
However while both Colecovision and the 5200 had trakball controllers, the Colecovision is a bit of a kludge to have to get going and a bit of a pain.
While the 5200 trakball simply plugged in and you were ready to go, the Coleco roller controller is a pain to have to connect into the coleco power supply, you had to plug the controllers into the ports inside the controller and locked in after messing with the cords a few times, then you connected it up to the console, phew..... how annoying is that?
Not lets talk games....
While Colecovision touted itself as bringing home The Arcade Experience, the arcade titles (with the exception of Donkey Kong, jr. and Zaxxon) are mostly forgotten, or lackluster titles and didn't have much in the way of graphics and sound. While many complained that the 5200 had just rehashed 2600 games, lets face it, Pac Man, Centipede, Defender and so forth rocked!!! Space Invaders lost a lot in the translation.... lets look at Star Raiders, Space Dungeon and others Whoa!!! These games were amazing.
Hands down, the Colecovision ruled at Expansion, with its 2600 module and upgrade to the Coleco ADAM, Coleco put a lot of thought into where they wanted the Colecovision to go.
Atari's 5200 had an expansion connector, but it seemed more like a token gesture then a well thought out path for expansion. Instead of putting all of the lines of the cartridge port out to the expansion bus plus additional lines for video input/output and so forth, the port should've also been put on the side of the 5200 and then thin wedges could be added to the side of the 5200 keeping its lines and look. The 2600 adapter was an example of nonsense to package a whole 2600 into a plastic case and have it sticking out of the 5200 like that.
So while Colecovision was certainly from a marking standby really catching people's attention, in a real hands down, direct side by side comparision, the 5200 really is the SUPER of the two Systems.
So, lets hear others commments and personal views, feelings and stories.