Merge pull request #71 from groessler/something_to_pull2
Support to create cartridges for the Atari.
This commit is contained in:
22
libsrc/atari/carthdr.s
Normal file
22
libsrc/atari/carthdr.s
Normal file
@@ -0,0 +1,22 @@
|
||||
; Cartridge "header"
|
||||
; (In fact, it's at the end of the cartridge, so more a "trailer".)
|
||||
;
|
||||
; Christian Groessler, 06-Jan-2014
|
||||
|
||||
.ifndef __ATARIXL__
|
||||
|
||||
.import __CARTSIZE__, __CARTFLAGS__, cartinit, cartstart
|
||||
.export __CART_HEADER__: absolute = 1
|
||||
|
||||
.include "atari.inc"
|
||||
|
||||
.segment "CARTHDR"
|
||||
|
||||
.word cartstart ; start routine
|
||||
.byte 0 ; must be zero
|
||||
.byte <__CARTFLAGS__
|
||||
.word cartinit ; init routine
|
||||
|
||||
.assert (__CARTSIZE__ = $2000 || __CARTSIZE__ = $4000), error, "Cartridge size must either be $2000 or $4000"
|
||||
|
||||
.endif ; .ifndef __ATARIXL__
|
||||
11
libsrc/atari/cartinit.s
Normal file
11
libsrc/atari/cartinit.s
Normal file
@@ -0,0 +1,11 @@
|
||||
; Cartridge init routine
|
||||
;
|
||||
; Christian Groessler, 06-Jan-2014
|
||||
|
||||
.ifndef __ATARIXL__
|
||||
|
||||
.export cartinit
|
||||
|
||||
cartinit: rts
|
||||
|
||||
.endif ; .ifndef __ATARIXL__
|
||||
21
libsrc/atari/cartstart.s
Normal file
21
libsrc/atari/cartstart.s
Normal file
@@ -0,0 +1,21 @@
|
||||
; Cartridge start routine
|
||||
;
|
||||
; Christian Groessler, 06-Jan-2014
|
||||
|
||||
.ifndef __ATARIXL__
|
||||
|
||||
.export cartstart
|
||||
|
||||
.import start, copydata
|
||||
.importzp ptr1, ptr2, tmp1, tmp2
|
||||
|
||||
.include "atari.inc"
|
||||
|
||||
; start routine of cartridge
|
||||
; copy data segment to RAM and chain to entry point of crt0.s
|
||||
|
||||
cartstart: jsr copydata
|
||||
jsr start ; run program
|
||||
jmp (DOSVEC) ; return to DOS
|
||||
|
||||
.endif ; .ifndef __ATARIXL__
|
||||
Reference in New Issue
Block a user