extern char *_getdefdev(void); /* get default floppy device */
/* global variables */
-extern unsigned char _dos_type; /* the DOS flavour */
-extern void atr130xe_emd[];
-extern void ataristd_joy[]; /* referred to by joy_static_stddrv[] */
-extern void atarim8_joy[];
-extern void atari10_tgi[];
-extern void atr10p2_tgi[];
-extern void atari11_tgi[];
-extern void atari14_tgi[];
-extern void atari15_tgi[];
-extern void atr15p2_tgi[];
-extern void atari3_tgi[];
-extern void atari4_tgi[];
-extern void atari5_tgi[];
-extern void atari6_tgi[];
-extern void atari7_tgi[];
-extern void atari8_tgi[]; /* referred to by tgi_static_stddrv[] */
+extern unsigned char _dos_type; /* the DOS flavour */
+extern void atr130_emd[];
+extern void atrstd_joy[]; /* referred to by joy_static_stddrv[] */
+extern void atrm8_joy[];
+extern void atr3_tgi[];
+extern void atr4_tgi[];
+extern void atr5_tgi[];
+extern void atr6_tgi[];
+extern void atr7_tgi[];
+extern void atr8_tgi[]; /* referred to by tgi_static_stddrv[] */
extern void atr8p2_tgi[];
-extern void atari9_tgi[];
+extern void atr9_tgi[];
extern void atr9p2_tgi[];
+extern void atr10_tgi[];
+extern void atr10p2_tgi[];
+extern void atr11_tgi[];
+extern void atr14_tgi[];
+extern void atr15_tgi[];
+extern void atr15p2_tgi[];
/* provide old names for backwards compatibility */
#ifdef ATARI_COMPAT_PRE_2_11
--- /dev/null
+;
+; Extended memory driver for the Atari 130XE memory standard
+; Shawn Jefferson, 2012-08-11
+;
+; Banking Register $D301:
+; Bit 7: Self-Test on/off
+; Bit 6: Unused
+; Bit 5: Antic sees bank
+; Bit 4: CPU sees bank
+; Bit 3: bank control
+; Bit 2: bank control
+; Bit 1: BASIC on/off
+; Bit 0: OS RAM on/off
+;
+; Masks: %11100011 $E3 Bank 0
+; %11100111 $E7 Bank 1
+; %11101011 $EB Bank 2
+; %11101111 $EF Bank 3
+; %11111111 $FF Off
+;
+; Based on the Extended memory driver for the Apple II auxiliary memory
+; by
+; Stefan Haubenthal, 2003-12-12
+; Ullrich von Bassewitz, 2002-12-02
+;
+
+ .include "zeropage.inc"
+
+ .include "em-kernel.inc"
+ .include "em-error.inc"
+
+
+ .macpack generic
+
+
+; ------------------------------------------------------------------------
+; Header. Includes jump table
+
+.segment "JUMPTABLE"
+
+; Driver signature
+
+ .byte $65, $6d, $64 ; "emd"
+ .byte EMD_API_VERSION ; EM API version number
+
+; Jump table.
+
+ .word INSTALL
+ .word DEINSTALL
+ .word PAGECOUNT
+ .word MAP
+ .word USE
+ .word COMMIT
+ .word COPYFROM
+ .word COPYTO
+
+; ------------------------------------------------------------------------
+; Constants
+
+BANK = $4000 ; bank window
+STACK = $0100 ; stack location
+PAGES = 256 ; 4 x 16k banks
+
+
+; ------------------------------------------------------------------------
+; Data.
+
+.rodata
+banks: .byte $E3,$E7,$EB,$EF ; 130XE banks for cpu banking
+
+stacktest: sei
+ ldy banks
+ sty $D301
+ tax ; A is set by caller
+ inx
+ stx $4000 ; change $4000
+ ldy #$FF ; STACK+13
+ sty $D301
+ cmp $4000 ; changed?
+ beq @1
+ sec ; error
+ bcs @2
+@1: clc
+@2: sta $4000 ; restore
+ cli
+ rts
+stacktest_end:
+
+stackcopy: sei ; disable interrupts
+@1: dex ; pre-decrement (full page x=0)
+ ldy #$FF ; this will be replaced STACK+3
+ sty $D301 ; set bank
+ lda $FF00,x ; address to copy from STACK+8,+9
+ ldy #$FF ; this will be replaced STACK+11
+ sty $D301
+ sta $FF00,x ; address to copy to STACK+16,+17
+ cpx #0
+ bne @1
+ ldy #$FF ; portb_save STACK+23
+ sty $D301
+ cli ; enable interrupts
+ rts
+stackcopy_end:
+
+stackcopy_byte: sei
+ ldy #$FF ; STACK+2
+ sty $D301
+ lda $FFFF ; STACK+7 +8
+ ldy #$FF ; STACK+10
+ sty $D301
+ sta $FFFF ; STACK+15 +16
+ ldy #$FF ; STACK+18
+ sty $D301
+ cli
+ rts
+stackcopy_byte_end:
+
+
+.data
+curpage: .byte $FF ; Current page number in bank (invalid)
+curbank: .byte $FF ; Current bank number
+
+.bss
+window: .res 256 ; Memory "window"
+portb_save: .res 1 ; portb state
+
+.code
+
+install_transfer:
+ ldx #stackcopy_end - stackcopy - 1
+@1: lda stackcopy,x
+ sta STACK,x
+ dex
+ bpl @1
+ rts
+
+install_byte_transfer:
+ ldx #stackcopy_byte_end - stackcopy_byte - 1
+@2: lda stackcopy_byte,x
+ sta STACK,x
+ dex
+ bpl @2
+ rts
+
+install_test:
+ ldx #stacktest_end - stacktest - 1
+@3: lda stacktest,x
+ sta STACK,x
+ dex
+ bpl @3
+ rts
+
+setpage:
+ tax ; save page
+ and #$C0 ; mask out bank
+ clc
+ ror
+ ror ; divide by 64
+ ror ; 64 pages in each bank
+ ror
+ ror
+ ror
+ sta curbank ; Remember the new bank
+ txa ; bring back page
+ and #$3F ; mask out page
+ sta curpage ; curpage in bank
+ rts
+
+
+; ------------------------------------------------------------------------
+; INSTALL routine. Is called after the driver is loaded into memory. If
+; possible, check if the hardware is present and determine the amount of
+; memory available.
+; Must return an EM_ERR_xx code in a/x.
+;
+
+INSTALL:
+ lda $D301 ; save state of portb
+ sta portb_save
+ tay
+
+ jsr install_test ; doesn't touch Y
+ sty STACK+13
+
+ lda $4000 ; test for extended memory
+ jsr STACK
+ bcs @1
+ lda #EM_ERR_OK
+ rts
+@1: lda #EM_ERR_NO_DEVICE
+ rts
+
+; ------------------------------------------------------------------------
+; DEINSTALL routine. Is called before the driver is removed from memory.
+; Can do cleanup or whatever. Must not return anything.
+;
+
+DEINSTALL:
+ rts
+
+
+; ------------------------------------------------------------------------
+; PAGECOUNT: Return the total number of available pages in a/x.
+;
+
+PAGECOUNT:
+ lda #<PAGES
+ ldx #>PAGES
+ rts
+
+; ------------------------------------------------------------------------
+; MAP: Map the page in a/x into memory and return a pointer to the page in
+; a/x. The contents of the currently mapped page (if any) may be discarded
+; by the driver.
+;
+
+MAP: jsr setpage ; extract the bank/page
+ add #>BANK ; $4000 + page (carry is cleared)
+ sta ptr1+1
+ ;ldy #$00
+ ;sty ptr1
+
+ lda #<window
+ sta ptr2
+ lda #>window
+ sta ptr2+1
+
+; Transfer one page
+
+ jsr install_transfer ; Transfer one page
+
+ ldx curbank
+ lda banks,x
+ sta STACK+3 ; set bank to copy from
+; lda ptr1
+; sta STACK+8
+ lda ptr1+1
+ sta STACK+9 ; set copy from address
+ lda portb_save
+ sta STACK+11 ; set portb restore
+ sta STACK+23 ; set final portb restore
+ lda ptr2
+ sta STACK+16
+ lda ptr2+1
+ sta STACK+17 ; set copy to address
+
+ ldx #0 ; full page copy
+ jsr STACK ; do the copy!
+
+; Return the memory window
+
+ lda #<window
+ ldx #>window ; Return the window address
+
+ rts
+
+; ------------------------------------------------------------------------
+; USE: Tell the driver that the window is now associated with a given page.
+
+USE: ;sta curpage ; Remember the page
+ jsr setpage ; extract bank/page
+ lda #<window
+ ldx #>window ; Return the window
+ rts
+
+; ------------------------------------------------------------------------
+; COMMIT: Commit changes in the memory window to extended storage.
+
+COMMIT: lda curpage ; Get the current page
+ cmp #$FF
+ beq commit_done ; Jump if no page mapped
+
+ clc
+ add #>BANK
+ sta ptr2+1
+ ;ldy #$00
+ ;sty ptr2
+
+ lda #<window
+ sta ptr1
+ lda #>window
+ sta ptr1+1
+
+; Transfer one page/all bytes
+
+ jsr install_transfer ; Transfer one page
+
+ lda portb_save
+ sta STACK+3 ; set bank to copy from
+ sta STACK+23 ; set final portb restore
+ lda ptr1
+ sta STACK+8
+ lda ptr1+1
+ sta STACK+9 ; set copy from address
+ ldx curbank
+ lda banks,x
+ sta STACK+11 ; set bank to copy to
+ ;lda ptr2
+ ;sta STACK+16
+ lda ptr2+1
+ sta STACK+17 ; set copy to address
+
+ ldx #0 ; full page copy
+ jsr STACK ; do the copy!
+
+commit_done:
+ rts
+
+
+; ------------------------------------------------------------------------
+; COPYFROM: Copy from extended into linear memory. A pointer to a structure
+; describing the request is passed in a/x.
+; The function must not return anything.
+;
+COPYFROM:
+ sta ptr3
+ stx ptr3+1 ; Save the passed em_copy pointer
+
+ jsr install_byte_transfer ; install the stack copy routine
+
+ ldy #EM_COPY::OFFS
+ lda (ptr3),y
+ sta STACK+7 ; offset goes into BANK low
+
+ ldy #EM_COPY::PAGE
+ lda (ptr3),y
+ sta tmp1 ; save page for later
+ ;add #>BANK
+ ;sta STACK+8 ; BANK + page goes into BANK high
+
+ ldy #EM_COPY::BUF
+ lda (ptr3),y
+ sta STACK+15 ; buffer goes into dest low
+ iny
+ lda (ptr3),y
+ sta STACK+16 ; buffer goes into dest high
+
+ ldy #EM_COPY::COUNT
+ lda (ptr3),y ; Get bytes in last page
+ sta ptr4
+ iny
+ lda (ptr3),y ; Get number of pages
+ sta ptr4+1
+
+ lda tmp1 ; extract bank/page
+ jsr setpage ; sets curbank/curpage
+ lda curpage
+ add #>BANK ; add to BANK address
+ sta STACK+8 ; current page in bank
+ ldx curbank
+ lda banks,x
+ sta STACK+2 ; set bank in stack
+ lda portb_save
+ sta STACK+10 ; set bank restore in stack
+ sta STACK+18 ; set final restore too
+
+copyfrom_copy:
+ lda ptr4 ; check if count is zero
+ bne @4
+ lda ptr4+1
+ beq done
+
+@4: jsr STACK ; copy one byte
+
+ sec
+ lda ptr4
+ sub #1
+ sta ptr4
+ bcs @1
+ lda ptr4+1
+ beq @1
+ sub #1
+ sta ptr4+1
+
+@1: inc STACK+7 ; increment address in BANK
+ bne @2
+ inc STACK+8
+ lda STACK+8
+ cmp #$80 ; we stepped outside bank
+ bne @2
+
+ inc curbank ; get next bank
+ ldx curbank
+ lda banks,x
+ sta STACK+2 ; set new bank
+ lda #$40 ; set address back to $4000
+ sta STACK+8
+
+@2: inc STACK+15 ; increment buffer address
+ bne @3
+ inc STACK+16
+
+@3: jmp copyfrom_copy ; copy another byte
+
+done:
+ rts
+
+; ------------------------------------------------------------------------
+; COPYTO: Copy from linear into extended memory. A pointer to a structure
+; describing the request is passed in a/x.
+; The function must not return anything.
+;
+
+COPYTO:
+ sta ptr3
+ stx ptr3+1 ; Save the passed em_copy pointer
+
+ jsr install_byte_transfer ; install the stack copy routine
+
+ ldy #EM_COPY::OFFS
+ lda (ptr3),y
+ sta STACK+15 ; offset goes into BANK low
+
+ ldy #EM_COPY::PAGE
+ lda (ptr3),y
+ sta tmp1 ; save page for later
+ ;add #>BANK
+ ;sta STACK+16 ; BANK + page goes into BANK high
+
+ ldy #EM_COPY::BUF
+ lda (ptr3),y
+ sta STACK+7 ; buffer goes into dest low
+ iny
+ lda (ptr3),y
+ sta STACK+8 ; buffer goes into dest high
+
+ ldy #EM_COPY::COUNT
+ lda (ptr3),y ; Get bytes in last page
+ sta ptr4
+ iny
+ lda (ptr3),y ; Get number of pages
+ sta ptr4+1
+
+ lda tmp1 ; extract bank/page
+ jsr setpage ; sets curbank/curpage
+ lda curpage
+ add #>BANK ; add to BANK address
+ sta STACK+16 ; current page in bank
+ ldx curbank
+ lda banks,x
+ sta STACK+10 ; set bank in stack
+ lda portb_save
+ sta STACK+2 ; set bank restore in stack
+ sta STACK+18 ; set final restore too
+
+copyto_copy:
+ lda ptr4 ; check if count is zero
+ bne @4
+ lda ptr4+1
+ beq done
+
+@4: jsr STACK ; copy one byte
+
+ sec
+ lda ptr4
+ sub #1
+ sta ptr4
+ bcs @1
+ lda ptr4+1
+ beq @1
+ sub #1
+ sta ptr4+1
+
+@1: inc STACK+15 ; increment address in BANK
+ bne @2
+ inc STACK+16
+ lda STACK+16
+ cmp #$80 ; we stepped outside bank
+ bne @2
+
+ inc curbank ; get next bank
+ ldx curbank
+ lda banks,x
+ sta STACK+10 ; set new bank
+ lda #$40 ; set address back to $4000
+ sta STACK+16
+
+@2: inc STACK+7 ; increment buffer address
+ bne @3
+ inc STACK+8
+
+@3: jmp copyto_copy ; copy another byte
+
+++ /dev/null
-;
-; Extended memory driver for the Atari 130XE memory standard
-; Shawn Jefferson, 2012-08-11
-;
-; Banking Register $D301:
-; Bit 7: Self-Test on/off
-; Bit 6: Unused
-; Bit 5: Antic sees bank
-; Bit 4: CPU sees bank
-; Bit 3: bank control
-; Bit 2: bank control
-; Bit 1: BASIC on/off
-; Bit 0: OS RAM on/off
-;
-; Masks: %11100011 $E3 Bank 0
-; %11100111 $E7 Bank 1
-; %11101011 $EB Bank 2
-; %11101111 $EF Bank 3
-; %11111111 $FF Off
-;
-; Based on the Extended memory driver for the Apple II auxiliary memory
-; by
-; Stefan Haubenthal, 2003-12-12
-; Ullrich von Bassewitz, 2002-12-02
-;
-
- .include "zeropage.inc"
-
- .include "em-kernel.inc"
- .include "em-error.inc"
-
-
- .macpack generic
-
-
-; ------------------------------------------------------------------------
-; Header. Includes jump table
-
-.segment "JUMPTABLE"
-
-; Driver signature
-
- .byte $65, $6d, $64 ; "emd"
- .byte EMD_API_VERSION ; EM API version number
-
-; Jump table.
-
- .word INSTALL
- .word DEINSTALL
- .word PAGECOUNT
- .word MAP
- .word USE
- .word COMMIT
- .word COPYFROM
- .word COPYTO
-
-; ------------------------------------------------------------------------
-; Constants
-
-BANK = $4000 ; bank window
-STACK = $0100 ; stack location
-PAGES = 256 ; 4 x 16k banks
-
-
-; ------------------------------------------------------------------------
-; Data.
-
-.rodata
-banks: .byte $E3,$E7,$EB,$EF ; 130XE banks for cpu banking
-
-stacktest: sei
- ldy banks
- sty $D301
- tax ; A is set by caller
- inx
- stx $4000 ; change $4000
- ldy #$FF ; STACK+13
- sty $D301
- cmp $4000 ; changed?
- beq @1
- sec ; error
- bcs @2
-@1: clc
-@2: sta $4000 ; restore
- cli
- rts
-stacktest_end:
-
-stackcopy: sei ; disable interrupts
-@1: dex ; pre-decrement (full page x=0)
- ldy #$FF ; this will be replaced STACK+3
- sty $D301 ; set bank
- lda $FF00,x ; address to copy from STACK+8,+9
- ldy #$FF ; this will be replaced STACK+11
- sty $D301
- sta $FF00,x ; address to copy to STACK+16,+17
- cpx #0
- bne @1
- ldy #$FF ; portb_save STACK+23
- sty $D301
- cli ; enable interrupts
- rts
-stackcopy_end:
-
-stackcopy_byte: sei
- ldy #$FF ; STACK+2
- sty $D301
- lda $FFFF ; STACK+7 +8
- ldy #$FF ; STACK+10
- sty $D301
- sta $FFFF ; STACK+15 +16
- ldy #$FF ; STACK+18
- sty $D301
- cli
- rts
-stackcopy_byte_end:
-
-
-.data
-curpage: .byte $FF ; Current page number in bank (invalid)
-curbank: .byte $FF ; Current bank number
-
-.bss
-window: .res 256 ; Memory "window"
-portb_save: .res 1 ; portb state
-
-.code
-
-install_transfer:
- ldx #stackcopy_end - stackcopy - 1
-@1: lda stackcopy,x
- sta STACK,x
- dex
- bpl @1
- rts
-
-install_byte_transfer:
- ldx #stackcopy_byte_end - stackcopy_byte - 1
-@2: lda stackcopy_byte,x
- sta STACK,x
- dex
- bpl @2
- rts
-
-install_test:
- ldx #stacktest_end - stacktest - 1
-@3: lda stacktest,x
- sta STACK,x
- dex
- bpl @3
- rts
-
-setpage:
- tax ; save page
- and #$C0 ; mask out bank
- clc
- ror
- ror ; divide by 64
- ror ; 64 pages in each bank
- ror
- ror
- ror
- sta curbank ; Remember the new bank
- txa ; bring back page
- and #$3F ; mask out page
- sta curpage ; curpage in bank
- rts
-
-
-; ------------------------------------------------------------------------
-; INSTALL routine. Is called after the driver is loaded into memory. If
-; possible, check if the hardware is present and determine the amount of
-; memory available.
-; Must return an EM_ERR_xx code in a/x.
-;
-
-INSTALL:
- lda $D301 ; save state of portb
- sta portb_save
- tay
-
- jsr install_test ; doesn't touch Y
- sty STACK+13
-
- lda $4000 ; test for extended memory
- jsr STACK
- bcs @1
- lda #EM_ERR_OK
- rts
-@1: lda #EM_ERR_NO_DEVICE
- rts
-
-; ------------------------------------------------------------------------
-; DEINSTALL routine. Is called before the driver is removed from memory.
-; Can do cleanup or whatever. Must not return anything.
-;
-
-DEINSTALL:
- rts
-
-
-; ------------------------------------------------------------------------
-; PAGECOUNT: Return the total number of available pages in a/x.
-;
-
-PAGECOUNT:
- lda #<PAGES
- ldx #>PAGES
- rts
-
-; ------------------------------------------------------------------------
-; MAP: Map the page in a/x into memory and return a pointer to the page in
-; a/x. The contents of the currently mapped page (if any) may be discarded
-; by the driver.
-;
-
-MAP: jsr setpage ; extract the bank/page
- add #>BANK ; $4000 + page (carry is cleared)
- sta ptr1+1
- ;ldy #$00
- ;sty ptr1
-
- lda #<window
- sta ptr2
- lda #>window
- sta ptr2+1
-
-; Transfer one page
-
- jsr install_transfer ; Transfer one page
-
- ldx curbank
- lda banks,x
- sta STACK+3 ; set bank to copy from
-; lda ptr1
-; sta STACK+8
- lda ptr1+1
- sta STACK+9 ; set copy from address
- lda portb_save
- sta STACK+11 ; set portb restore
- sta STACK+23 ; set final portb restore
- lda ptr2
- sta STACK+16
- lda ptr2+1
- sta STACK+17 ; set copy to address
-
- ldx #0 ; full page copy
- jsr STACK ; do the copy!
-
-; Return the memory window
-
- lda #<window
- ldx #>window ; Return the window address
-
- rts
-
-; ------------------------------------------------------------------------
-; USE: Tell the driver that the window is now associated with a given page.
-
-USE: ;sta curpage ; Remember the page
- jsr setpage ; extract bank/page
- lda #<window
- ldx #>window ; Return the window
- rts
-
-; ------------------------------------------------------------------------
-; COMMIT: Commit changes in the memory window to extended storage.
-
-COMMIT: lda curpage ; Get the current page
- cmp #$FF
- beq commit_done ; Jump if no page mapped
-
- clc
- add #>BANK
- sta ptr2+1
- ;ldy #$00
- ;sty ptr2
-
- lda #<window
- sta ptr1
- lda #>window
- sta ptr1+1
-
-; Transfer one page/all bytes
-
- jsr install_transfer ; Transfer one page
-
- lda portb_save
- sta STACK+3 ; set bank to copy from
- sta STACK+23 ; set final portb restore
- lda ptr1
- sta STACK+8
- lda ptr1+1
- sta STACK+9 ; set copy from address
- ldx curbank
- lda banks,x
- sta STACK+11 ; set bank to copy to
- ;lda ptr2
- ;sta STACK+16
- lda ptr2+1
- sta STACK+17 ; set copy to address
-
- ldx #0 ; full page copy
- jsr STACK ; do the copy!
-
-commit_done:
- rts
-
-
-; ------------------------------------------------------------------------
-; COPYFROM: Copy from extended into linear memory. A pointer to a structure
-; describing the request is passed in a/x.
-; The function must not return anything.
-;
-COPYFROM:
- sta ptr3
- stx ptr3+1 ; Save the passed em_copy pointer
-
- jsr install_byte_transfer ; install the stack copy routine
-
- ldy #EM_COPY::OFFS
- lda (ptr3),y
- sta STACK+7 ; offset goes into BANK low
-
- ldy #EM_COPY::PAGE
- lda (ptr3),y
- sta tmp1 ; save page for later
- ;add #>BANK
- ;sta STACK+8 ; BANK + page goes into BANK high
-
- ldy #EM_COPY::BUF
- lda (ptr3),y
- sta STACK+15 ; buffer goes into dest low
- iny
- lda (ptr3),y
- sta STACK+16 ; buffer goes into dest high
-
- ldy #EM_COPY::COUNT
- lda (ptr3),y ; Get bytes in last page
- sta ptr4
- iny
- lda (ptr3),y ; Get number of pages
- sta ptr4+1
-
- lda tmp1 ; extract bank/page
- jsr setpage ; sets curbank/curpage
- lda curpage
- add #>BANK ; add to BANK address
- sta STACK+8 ; current page in bank
- ldx curbank
- lda banks,x
- sta STACK+2 ; set bank in stack
- lda portb_save
- sta STACK+10 ; set bank restore in stack
- sta STACK+18 ; set final restore too
-
-copyfrom_copy:
- lda ptr4 ; check if count is zero
- bne @4
- lda ptr4+1
- beq done
-
-@4: jsr STACK ; copy one byte
-
- sec
- lda ptr4
- sub #1
- sta ptr4
- bcs @1
- lda ptr4+1
- beq @1
- sub #1
- sta ptr4+1
-
-@1: inc STACK+7 ; increment address in BANK
- bne @2
- inc STACK+8
- lda STACK+8
- cmp #$80 ; we stepped outside bank
- bne @2
-
- inc curbank ; get next bank
- ldx curbank
- lda banks,x
- sta STACK+2 ; set new bank
- lda #$40 ; set address back to $4000
- sta STACK+8
-
-@2: inc STACK+15 ; increment buffer address
- bne @3
- inc STACK+16
-
-@3: jmp copyfrom_copy ; copy another byte
-
-done:
- rts
-
-; ------------------------------------------------------------------------
-; COPYTO: Copy from linear into extended memory. A pointer to a structure
-; describing the request is passed in a/x.
-; The function must not return anything.
-;
-
-COPYTO:
- sta ptr3
- stx ptr3+1 ; Save the passed em_copy pointer
-
- jsr install_byte_transfer ; install the stack copy routine
-
- ldy #EM_COPY::OFFS
- lda (ptr3),y
- sta STACK+15 ; offset goes into BANK low
-
- ldy #EM_COPY::PAGE
- lda (ptr3),y
- sta tmp1 ; save page for later
- ;add #>BANK
- ;sta STACK+16 ; BANK + page goes into BANK high
-
- ldy #EM_COPY::BUF
- lda (ptr3),y
- sta STACK+7 ; buffer goes into dest low
- iny
- lda (ptr3),y
- sta STACK+8 ; buffer goes into dest high
-
- ldy #EM_COPY::COUNT
- lda (ptr3),y ; Get bytes in last page
- sta ptr4
- iny
- lda (ptr3),y ; Get number of pages
- sta ptr4+1
-
- lda tmp1 ; extract bank/page
- jsr setpage ; sets curbank/curpage
- lda curpage
- add #>BANK ; add to BANK address
- sta STACK+16 ; current page in bank
- ldx curbank
- lda banks,x
- sta STACK+10 ; set bank in stack
- lda portb_save
- sta STACK+2 ; set bank restore in stack
- sta STACK+18 ; set final restore too
-
-copyto_copy:
- lda ptr4 ; check if count is zero
- bne @4
- lda ptr4+1
- beq done
-
-@4: jsr STACK ; copy one byte
-
- sec
- lda ptr4
- sub #1
- sta ptr4
- bcs @1
- lda ptr4+1
- beq @1
- sub #1
- sta ptr4+1
-
-@1: inc STACK+15 ; increment address in BANK
- bne @2
- inc STACK+16
- lda STACK+16
- cmp #$80 ; we stepped outside bank
- bne @2
-
- inc curbank ; get next bank
- ldx curbank
- lda banks,x
- sta STACK+10 ; set new bank
- lda #$40 ; set address back to $4000
- sta STACK+16
-
-@2: inc STACK+7 ; increment buffer address
- bne @3
- inc STACK+8
-
-@3: jmp copyto_copy ; copy another byte
-
+++ /dev/null
-;
-; MultiJoy joystick driver for the Atari. May be used multiple times when linked
-; to the statically application.
-;
-; Ullrich von Bassewitz, 2002-12-21
-; Stefan Haubenthal, 2009-04-10
-; Using code from Carsten Strotmann and help from Christian Groessler
-;
-
- .include "zeropage.inc"
-
- .include "joy-kernel.inc"
- .include "joy-error.inc"
- .include "atari.inc"
-
- .macpack generic
-
-
-; ------------------------------------------------------------------------
-; Header. Includes jump table
-
-.segment "JUMPTABLE"
-
-; Driver signature
-
- .byte $6A, $6F, $79 ; "joy"
- .byte JOY_API_VERSION ; Driver API version number
-
-; Button state masks (8 values)
-
- .byte $02 ; JOY_UP
- .byte $04 ; JOY_DOWN
- .byte $08 ; JOY_LEFT
- .byte $10 ; JOY_RIGHT
- .byte $01 ; JOY_FIRE
- .byte $00 ; JOY_FIRE2 not available
- .byte $00 ; Future expansion
- .byte $00 ; Future expansion
-
-; Jump table.
-
- .addr INSTALL
- .addr UNINSTALL
- .addr COUNT
- .addr READJOY
- .addr 0 ; IRQ entry not used
-
-; ------------------------------------------------------------------------
-; Constants
-
-JOY_COUNT = 8 ; Number of joysticks we support
-
-
-; ------------------------------------------------------------------------
-; Data.
-
-
-.code
-
-; ------------------------------------------------------------------------
-; INSTALL routine. Is called after the driver is loaded into memory. If
-; possible, check if the hardware is present and determine the amount of
-; memory available.
-; Must return an JOY_ERR_xx code in a/x.
-;
-
-INSTALL:
- lda #$30
- sta PACTL
- lda #$F0
- sta PORTA
- lda #$34
- sta PACTL
- lda #JOY_ERR_OK
- ldx #0
-; rts ; Run into UNINSTALL instead
-
-; ------------------------------------------------------------------------
-; UNINSTALL routine. Is called before the driver is removed from memory.
-; Can do cleanup or whatever. Must not return anything.
-;
-
-UNINSTALL:
- rts
-
-
-; ------------------------------------------------------------------------
-; COUNT: Return the total number of available joysticks in a/x.
-;
-
-COUNT:
- lda #JOY_COUNT
- ldx #0
- rts
-
-; ------------------------------------------------------------------------
-; READ: Read a particular joystick passed in A.
-;
-
-READJOY:
- asl a
- asl a
- asl a
- asl a
- sta PORTA
-
-; Read joystick
-
- lda PORTA ; get position
- and #%00001111
- asl a
- ora TRIG0 ; add button information
- eor #%00011111
- ldx #0 ; fix X
- rts
+++ /dev/null
-;
-; Standard joystick driver for the Atari. May be used multiple times when linked
-; to the statically application.
-;
-; Ullrich von Bassewitz, 2002-12-21
-; Using the readjoy code from Christian Groessler
-;
-
- .include "zeropage.inc"
-
- .include "joy-kernel.inc"
- .include "joy-error.inc"
- .include "atari.inc"
-
- .macpack generic
-
-
-; ------------------------------------------------------------------------
-; Header. Includes jump table
-
-.segment "JUMPTABLE"
-
-; Driver signature
-
- .byte $6A, $6F, $79 ; "joy"
- .byte JOY_API_VERSION ; Driver API version number
-
-; Button state masks (8 values)
-
- .byte $01 ; JOY_UP
- .byte $02 ; JOY_DOWN
- .byte $04 ; JOY_LEFT
- .byte $08 ; JOY_RIGHT
- .byte $10 ; JOY_FIRE
- .byte $00 ; JOY_FIRE2 not available
- .byte $00 ; Future expansion
- .byte $00 ; Future expansion
-
-; Jump table.
-
- .addr INSTALL
- .addr UNINSTALL
- .addr COUNT
- .addr READJOY
- .addr 0 ; IRQ entry not used
-
-; ------------------------------------------------------------------------
-; Constants
-
-JOY_COUNT = 4 ; Number of joysticks we support
-
-
-; ------------------------------------------------------------------------
-; Data.
-
-
-.code
-
-; ------------------------------------------------------------------------
-; INSTALL routine. Is called after the driver is loaded into memory. If
-; possible, check if the hardware is present and determine the amount of
-; memory available.
-; Must return an JOY_ERR_xx code in a/x.
-;
-
-INSTALL:
- lda #JOY_ERR_OK
- ldx #0
-; rts ; Run into UNINSTALL instead
-
-; ------------------------------------------------------------------------
-; UNINSTALL routine. Is called before the driver is removed from memory.
-; Can do cleanup or whatever. Must not return anything.
-;
-
-UNINSTALL:
- rts
-
-
-; ------------------------------------------------------------------------
-; COUNT: Return the total number of available joysticks in a/x.
-;
-
-COUNT:
- lda #JOY_COUNT
- ldx $fcd8
- cpx #$a2
- beq _400800
- lsr a ; XL and newer machines only have 2 ports
-_400800:
- ldx #0
- rts
-
-; ------------------------------------------------------------------------
-; READ: Read a particular joystick passed in A.
-;
-
-READJOY:
- and #3 ; fix joystick number
- tax ; Joystick number (0-3) into X
-
-; Read joystick
-
- lda STRIG0,x ; get button
- asl a
- asl a
- asl a
- asl a
- ora STICK0,x ; add position information
- eor #$1F
- ldx #0 ; fix X
- rts
--- /dev/null
+;
+; MultiJoy joystick driver for the Atari. May be used multiple times when linked
+; to the statically application.
+;
+; Ullrich von Bassewitz, 2002-12-21
+; Stefan Haubenthal, 2009-04-10
+; Using code from Carsten Strotmann and help from Christian Groessler
+;
+
+ .include "zeropage.inc"
+
+ .include "joy-kernel.inc"
+ .include "joy-error.inc"
+ .include "atari.inc"
+
+ .macpack generic
+
+
+; ------------------------------------------------------------------------
+; Header. Includes jump table
+
+.segment "JUMPTABLE"
+
+; Driver signature
+
+ .byte $6A, $6F, $79 ; "joy"
+ .byte JOY_API_VERSION ; Driver API version number
+
+; Button state masks (8 values)
+
+ .byte $02 ; JOY_UP
+ .byte $04 ; JOY_DOWN
+ .byte $08 ; JOY_LEFT
+ .byte $10 ; JOY_RIGHT
+ .byte $01 ; JOY_FIRE
+ .byte $00 ; JOY_FIRE2 not available
+ .byte $00 ; Future expansion
+ .byte $00 ; Future expansion
+
+; Jump table.
+
+ .addr INSTALL
+ .addr UNINSTALL
+ .addr COUNT
+ .addr READJOY
+ .addr 0 ; IRQ entry not used
+
+; ------------------------------------------------------------------------
+; Constants
+
+JOY_COUNT = 8 ; Number of joysticks we support
+
+
+; ------------------------------------------------------------------------
+; Data.
+
+
+.code
+
+; ------------------------------------------------------------------------
+; INSTALL routine. Is called after the driver is loaded into memory. If
+; possible, check if the hardware is present and determine the amount of
+; memory available.
+; Must return an JOY_ERR_xx code in a/x.
+;
+
+INSTALL:
+ lda #$30
+ sta PACTL
+ lda #$F0
+ sta PORTA
+ lda #$34
+ sta PACTL
+ lda #JOY_ERR_OK
+ ldx #0
+; rts ; Run into UNINSTALL instead
+
+; ------------------------------------------------------------------------
+; UNINSTALL routine. Is called before the driver is removed from memory.
+; Can do cleanup or whatever. Must not return anything.
+;
+
+UNINSTALL:
+ rts
+
+
+; ------------------------------------------------------------------------
+; COUNT: Return the total number of available joysticks in a/x.
+;
+
+COUNT:
+ lda #JOY_COUNT
+ ldx #0
+ rts
+
+; ------------------------------------------------------------------------
+; READ: Read a particular joystick passed in A.
+;
+
+READJOY:
+ asl a
+ asl a
+ asl a
+ asl a
+ sta PORTA
+
+; Read joystick
+
+ lda PORTA ; get position
+ and #%00001111
+ asl a
+ ora TRIG0 ; add button information
+ eor #%00011111
+ ldx #0 ; fix X
+ rts
--- /dev/null
+;
+; Standard joystick driver for the Atari. May be used multiple times when linked
+; to the statically application.
+;
+; Ullrich von Bassewitz, 2002-12-21
+; Using the readjoy code from Christian Groessler
+;
+
+ .include "zeropage.inc"
+
+ .include "joy-kernel.inc"
+ .include "joy-error.inc"
+ .include "atari.inc"
+
+ .macpack generic
+
+
+; ------------------------------------------------------------------------
+; Header. Includes jump table
+
+.segment "JUMPTABLE"
+
+; Driver signature
+
+ .byte $6A, $6F, $79 ; "joy"
+ .byte JOY_API_VERSION ; Driver API version number
+
+; Button state masks (8 values)
+
+ .byte $01 ; JOY_UP
+ .byte $02 ; JOY_DOWN
+ .byte $04 ; JOY_LEFT
+ .byte $08 ; JOY_RIGHT
+ .byte $10 ; JOY_FIRE
+ .byte $00 ; JOY_FIRE2 not available
+ .byte $00 ; Future expansion
+ .byte $00 ; Future expansion
+
+; Jump table.
+
+ .addr INSTALL
+ .addr UNINSTALL
+ .addr COUNT
+ .addr READJOY
+ .addr 0 ; IRQ entry not used
+
+; ------------------------------------------------------------------------
+; Constants
+
+JOY_COUNT = 4 ; Number of joysticks we support
+
+
+; ------------------------------------------------------------------------
+; Data.
+
+
+.code
+
+; ------------------------------------------------------------------------
+; INSTALL routine. Is called after the driver is loaded into memory. If
+; possible, check if the hardware is present and determine the amount of
+; memory available.
+; Must return an JOY_ERR_xx code in a/x.
+;
+
+INSTALL:
+ lda #JOY_ERR_OK
+ ldx #0
+; rts ; Run into UNINSTALL instead
+
+; ------------------------------------------------------------------------
+; UNINSTALL routine. Is called before the driver is removed from memory.
+; Can do cleanup or whatever. Must not return anything.
+;
+
+UNINSTALL:
+ rts
+
+
+; ------------------------------------------------------------------------
+; COUNT: Return the total number of available joysticks in a/x.
+;
+
+COUNT:
+ lda #JOY_COUNT
+ ldx $fcd8
+ cpx #$a2
+ beq _400800
+ lsr a ; XL and newer machines only have 2 ports
+_400800:
+ ldx #0
+ rts
+
+; ------------------------------------------------------------------------
+; READ: Read a particular joystick passed in A.
+;
+
+READJOY:
+ and #3 ; fix joystick number
+ tax ; Joystick number (0-3) into X
+
+; Read joystick
+
+ lda STRIG0,x ; get button
+ asl a
+ asl a
+ asl a
+ asl a
+ ora STICK0,x ; add position information
+ eor #$1F
+ ldx #0 ; fix X
+ rts
;
.export _joy_static_stddrv
- .import _ataristd_joy
+ .import _atrstd_joy
.rodata
-_joy_static_stddrv := _ataristd_joy
+_joy_static_stddrv := _atrstd_joy
.rodata
-_joy_stddrv: .asciiz "ataristd.joy"
+_joy_stddrv: .asciiz "atrstd.joy"
+++ /dev/null
-;
-; Graphics driver for the 80x192x9 (CIO mode 10, ANTIC mode F, GTIA mode $80) on the Atari.
-;
-; Fatih Aygun (2009)
-;
-
- .include "atari.inc"
- .include "zeropage.inc"
-
- .include "tgi-kernel.inc"
- .include "tgi-error.inc"
-
- .macpack generic
-
-; ******************************************************************************
-
- ; ----------------------------------------------------------------------
- ;
- ; Constants and tables
- ;
- ; ----------------------------------------------------------------------
-
-; Graphics mode
- grmode = 10
-; X resolution
- x_res = 80
-; Y resolution
- y_res = 192
-; Number of colors
- colors = 9
-; Pixels per byte
- ppb = 2
-; Screen memory size in bytes
- scrsize = x_res * y_res / ppb
-; Pixel aspect ratio
- aspect = $0330 ; based on 4/3 display
-; Free memory needed
- mem_needed = 7147
-; Number of screen pages
- pages = 1
-
-.rodata
- mask_table: ; Mask table to set pixels
- .byte %11110000, %00001111
- masks: ; Color masks
- .byte $00, $11, $22, $33, $44, $55, $66, $77, $88
- bar_table: ; Mask table for BAR
- .byte %11111111, %00001111, %00000000
- default_palette:
- .byte $00, $0E, $32, $96, $68, $C4, $74, $EE, $4A
-
-.code
-
-; ******************************************************************************
-
-.proc SETPALETTE
-
- ; ----------------------------------------------------------------------
- ;
- ; SETPALETTE: Set the palette (in ptr1)
- ;
- ; ----------------------------------------------------------------------
-
-.code
- ; Copy the palette
- ldy #colors - 1
-loop: lda (ptr1),y
- sta palette,y
- sta PCOLR0,y
- dey
- bpl loop
-
- ; Done, reset the error code
- lda #TGI_ERR_OK
- sta error
- rts
-.endproc
-
-.include "atari_tgi_common.inc"
+++ /dev/null
-;
-; Graphics driver for the 80x192x16h (CIO mode 11, ANTIC mode F, GTIA mode $C0) on the Atari.
-;
-; Fatih Aygun (2009)
-;
-
- .include "atari.inc"
- .include "zeropage.inc"
-
- .include "tgi-kernel.inc"
- .include "tgi-error.inc"
-
- .macpack generic
-
-; ******************************************************************************
-
- ; ----------------------------------------------------------------------
- ;
- ; Constants and tables
- ;
- ; ----------------------------------------------------------------------
-
-; Graphics mode
- grmode = 11
-; X resolution
- x_res = 80
-; Y resolution
- y_res = 192
-; Number of colors
- colors = 16
-; Pixels per byte
- ppb = 2
-; Screen memory size in bytes
- scrsize = x_res * y_res / ppb
-; Pixel aspect ratio
- aspect = $0330 ; based on 4/3 display
-; Free memory needed
- mem_needed = 7147
-; Number of screen pages
- pages = 1
-
-.rodata
- mask_table: ; Mask table to set pixels
- .byte %11110000, %00001111
- masks: ; Color masks
- .byte $00, $11, $22, $33, $44, $55, $66, $77, $88, $99, $aa, $bb, $cc, $dd, $ee, $ff
- bar_table: ; Mask table for BAR
- .byte %11111111, %00001111, %00000000
- default_palette:
- .byte $00, $10, $20, $30, $40, $50, $60, $70, $80, $90, $A0, $B0, $C0, $D0, $E0, $F0
-
-.code
-
-; ******************************************************************************
-
-.proc SETPALETTE
-
- ; ----------------------------------------------------------------------
- ;
- ; SETPALETTE: Set the palette (in ptr1)
- ;
- ; ----------------------------------------------------------------------
-
-.code
- ; No palettes
- lda #TGI_ERR_INV_FUNC
- sta error
- rts
-.endproc
-
-.include "atari_tgi_common.inc"
+++ /dev/null
-;
-; Graphics driver for the 160x192x2 (CIO mode 14, ANTIC mode C) on the Atari.
-;
-; Fatih Aygun (2009)
-;
-
- .include "atari.inc"
- .include "zeropage.inc"
-
- .include "tgi-kernel.inc"
- .include "tgi-error.inc"
-
- .macpack generic
-
-; ******************************************************************************
-
- ; ----------------------------------------------------------------------
- ;
- ; Constants and tables
- ;
- ; ----------------------------------------------------------------------
-
-; Graphics mode
- grmode = 14
-; X resolution
- x_res = 160
-; Y resolution
- y_res = 192
-; Number of colors
- colors = 2
-; Pixels per byte
- ppb = 8
-; Screen memory size in bytes
- scrsize = x_res * y_res / ppb
-; Pixel aspect ratio
- aspect = $0198 ; based on 4/3 display
-; Free memory needed
- mem_needed = 3305
-; Number of screen pages
- pages = 1
-
-.rodata
- mask_table: ; Mask table to set pixels
- .byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001
- masks: ; Color masks
- .byte %00000000, %11111111
- bar_table: ; Mask table for BAR
- .byte %11111111, %01111111, %00111111, %00011111, %00001111, %00000111, %00000011, %00000001, %00000000
- default_palette:
- .byte $00, $0E
-
-.code
-
-; ******************************************************************************
-
-.proc SETPALETTE
-
- ; ----------------------------------------------------------------------
- ;
- ; SETPALETTE: Set the palette (in ptr1)
- ;
- ; ----------------------------------------------------------------------
-
-.code
- ; Copy the palette
- ldy #colors - 1
-loop: lda (ptr1),y
- sta palette,y
- dey
- bpl loop
-
- ; Get the color entries from the palette
- lda palette
- sta COLOR4
- lda palette + 1
- sta COLOR0
-
- ; Done, reset the error code
- lda #TGI_ERR_OK
- sta error
- rts
-.endproc
-
-.include "atari_tgi_common.inc"
+++ /dev/null
-;
-; Graphics driver for the 160x192x2 (CIO mode 15, ANTIC mode E) on the Atari.
-;
-; Fatih Aygun (2009)
-;
-
- .include "atari.inc"
- .include "zeropage.inc"
-
- .include "tgi-kernel.inc"
- .include "tgi-error.inc"
-
- .macpack generic
-
-; ******************************************************************************
-
- ; ----------------------------------------------------------------------
- ;
- ; Constants and tables
- ;
- ; ----------------------------------------------------------------------
-
-; Graphics mode
- grmode = 15
-; X resolution
- x_res = 160
-; Y resolution
- y_res = 192
-; Number of colors
- colors = 4
-; Pixels per byte
- ppb = 4
-; Screen memory size in bytes
- scrsize = x_res * y_res / ppb
-; Pixel aspect ratio
- aspect = $0198 ; based on 4/3 display
-; Free memory needed
- mem_needed = 7147
-; Number of screen pages
- pages = 1
-
-.rodata
- mask_table: ; Mask table to set pixels
- .byte %11000000, %00110000, %00001100, %00000011
- masks: ; Color masks
- .byte %00000000, %01010101, %10101010, %11111111
- bar_table: ; Mask table for BAR
- .byte %11111111, %00111111, %00001111, %00000011, %00000000
- default_palette:
- .byte $00, $0E, $32, $96
-
-.code
-
-; ******************************************************************************
-
-.proc SETPALETTE
-
- ; ----------------------------------------------------------------------
- ;
- ; SETPALETTE: Set the palette (in ptr1)
- ;
- ; ----------------------------------------------------------------------
-
-.code
- ; Copy the palette
- ldy #colors - 1
-loop: lda (ptr1),y
- sta palette,y
- dey
- bpl loop
-
- ; Get the color entries from the palette
- lda palette
- sta COLOR4
- lda palette + 1
- sta COLOR0
- lda palette + 2
- sta COLOR1
- lda palette + 3
- sta COLOR2
-
- ; Done, reset the error code
- lda #TGI_ERR_OK
- sta error
- rts
-.endproc
-
-.include "atari_tgi_common.inc"
+++ /dev/null
-;
-; Graphics driver for the 40x24x4 (CIO mode 3, ANTIC mode 8) on the Atari.
-;
-; Fatih Aygun (2009)
-;
-
- .include "atari.inc"
- .include "zeropage.inc"
-
- .include "tgi-kernel.inc"
- .include "tgi-error.inc"
-
- .macpack generic
-
-; ******************************************************************************
-
- ; ----------------------------------------------------------------------
- ;
- ; Constants and tables
- ;
- ; ----------------------------------------------------------------------
-
-; Graphics mode
- grmode = 3
-; X resolution
- x_res = 40
-; Y resolution
- y_res = 24
-; Number of colors
- colors = 4
-; Pixels per byte
- ppb = 4
-; Screen memory size in bytes
- scrsize = x_res * y_res / ppb
-; Pixel aspect ratio
- aspect = $00CC ; based on 4/3 display
-; Free memory needed
- mem_needed = 1
-; Number of screen pages
- pages = 1
-
-.rodata
- mask_table: ; Mask table to set pixels
- .byte %11000000, %00110000, %00001100, %00000011
- masks: ; Color masks
- .byte %00000000, %01010101, %10101010, %11111111
- bar_table: ; Mask table for BAR
- .byte %11111111, %00111111, %00001111, %00000011, %00000000
- default_palette:
- .byte $00, $0E, $32, $96
-
-.code
-
-; ******************************************************************************
-
-.proc SETPALETTE
-
- ; ----------------------------------------------------------------------
- ;
- ; SETPALETTE: Set the palette (in ptr1)
- ;
- ; ----------------------------------------------------------------------
-
-.code
- ; Copy the palette
- ldy #colors - 1
-loop: lda (ptr1),y
- sta palette,y
- dey
- bpl loop
-
- ; Get the color entries from the palette
- lda palette
- sta COLOR4
- lda palette + 1
- sta COLOR0
- lda palette + 2
- sta COLOR1
- lda palette + 3
- sta COLOR2
-
- ; Done, reset the error code
- lda #TGI_ERR_OK
- sta error
- rts
-.endproc
-
-.include "atari_tgi_common.inc"
+++ /dev/null
-;
-; Graphics driver for the 80x48x2 (CIO mode 4, ANTIC mode 9) on the Atari.
-;
-; Fatih Aygun (2009)
-;
-
- .include "atari.inc"
- .include "zeropage.inc"
-
- .include "tgi-kernel.inc"
- .include "tgi-error.inc"
-
- .macpack generic
-
-; ******************************************************************************
-
- ; ----------------------------------------------------------------------
- ;
- ; Constants and tables
- ;
- ; ----------------------------------------------------------------------
-
-; Graphics mode
- grmode = 4
-; X resolution
- x_res = 80
-; Y resolution
- y_res = 48
-; Number of colors
- colors = 2
-; Pixels per byte
- ppb = 8
-; Screen memory size in bytes
- scrsize = x_res * y_res / ppb
-; Pixel aspect ratio
- aspect = $00CC ; based on 4/3 display
-; Free memory needed
- mem_needed = 1
-; Number of screen pages
- pages = 1
-
-.rodata
- mask_table: ; Mask table to set pixels
- .byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001
- masks: ; Color masks
- .byte %00000000, %11111111
- bar_table: ; Mask table for BAR
- .byte %11111111, %01111111, %00111111, %00011111, %00001111, %00000111, %00000011, %00000001, %00000000
- default_palette:
- .byte $00, $0E
-
-.code
-
-; ******************************************************************************
-
-.proc SETPALETTE
-
- ; ----------------------------------------------------------------------
- ;
- ; SETPALETTE: Set the palette (in ptr1)
- ;
- ; ----------------------------------------------------------------------
-
-.code
- ; Copy the palette
- ldy #colors - 1
-loop: lda (ptr1),y
- sta palette,y
- dey
- bpl loop
-
- ; Get the color entries from the palette
- lda palette
- sta COLOR4
- lda palette + 1
- sta COLOR0
-
- ; Done, reset the error code
- lda #TGI_ERR_OK
- sta error
- rts
-.endproc
-
-.include "atari_tgi_common.inc"
+++ /dev/null
-;
-; Graphics driver for the 80x48x4 (CIO mode 5, ANTIC mode A) on the Atari.
-;
-; Fatih Aygun (2009)
-;
-
- .include "atari.inc"
- .include "zeropage.inc"
-
- .include "tgi-kernel.inc"
- .include "tgi-error.inc"
-
- .macpack generic
-
-; ******************************************************************************
-
- ; ----------------------------------------------------------------------
- ;
- ; Constants and tables
- ;
- ; ----------------------------------------------------------------------
-
-; Graphics mode
- grmode = 5
-; X resolution
- x_res = 80
-; Y resolution
- y_res = 48
-; Number of colors
- colors = 4
-; Pixels per byte
- ppb = 4
-; Screen memory size in bytes
- scrsize = x_res * y_res / ppb
-; Pixel aspect ratio
- aspect = $00CC ; based on 4/3 display
-; Free memory needed
- mem_needed = 185
-; Number of screen pages
- pages = 1
-
-.rodata
- mask_table: ; Mask table to set pixels
- .byte %11000000, %00110000, %00001100, %00000011
- masks: ; Color masks
- .byte %00000000, %01010101, %10101010, %11111111
- bar_table: ; Mask table for BAR
- .byte %11111111, %00111111, %00001111, %00000011, %00000000
- default_palette:
- .byte $00, $0E, $32, $96
-
-.code
-
-; ******************************************************************************
-
-.proc SETPALETTE
-
- ; ----------------------------------------------------------------------
- ;
- ; SETPALETTE: Set the palette (in ptr1)
- ;
- ; ----------------------------------------------------------------------
-
-.code
- ; Copy the palette
- ldy #colors - 1
-loop: lda (ptr1),y
- sta palette,y
- dey
- bpl loop
-
- ; Get the color entries from the palette
- lda palette
- sta COLOR4
- lda palette + 1
- sta COLOR0
- lda palette + 2
- sta COLOR1
- lda palette + 3
- sta COLOR2
-
- ; Done, reset the error code
- lda #TGI_ERR_OK
- sta error
- rts
-.endproc
-
-.include "atari_tgi_common.inc"
+++ /dev/null
-;
-; Graphics driver for the 160x96x2 (CIO mode 6, ANTIC mode B) on the Atari.
-;
-; Fatih Aygun (2009)
-;
-
- .include "atari.inc"
- .include "zeropage.inc"
-
- .include "tgi-kernel.inc"
- .include "tgi-error.inc"
-
- .macpack generic
-
-; ******************************************************************************
-
- ; ----------------------------------------------------------------------
- ;
- ; Constants and tables
- ;
- ; ----------------------------------------------------------------------
-
-; Graphics mode
- grmode = 6
-; X resolution
- x_res = 160
-; Y resolution
- y_res = 96
-; Number of colors
- colors = 2
-; Pixels per byte
- ppb = 8
-; Screen memory size in bytes
- scrsize = x_res * y_res / ppb
-; Pixel aspect ratio
- aspect = $00CC ; based on 4/3 display
-; Free memory needed
- mem_needed = 1193
-; Number of screen pages
- pages = 1
-
-.rodata
- mask_table: ; Mask table to set pixels
- .byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001
- masks: ; Color masks
- .byte %00000000, %11111111
- bar_table: ; Mask table for BAR
- .byte %11111111, %01111111, %00111111, %00011111, %00001111, %00000111, %00000011, %00000001, %00000000
- default_palette:
- .byte $00, $0E
-
-.code
-
-; ******************************************************************************
-
-.proc SETPALETTE
-
- ; ----------------------------------------------------------------------
- ;
- ; SETPALETTE: Set the palette (in ptr1)
- ;
- ; ----------------------------------------------------------------------
-
-.code
- ; Copy the palette
- ldy #colors - 1
-loop: lda (ptr1),y
- sta palette,y
- dey
- bpl loop
-
- ; Get the color entries from the palette
- lda palette
- sta COLOR4
- lda palette + 1
- sta COLOR0
-
- ; Done, reset the error code
- lda #TGI_ERR_OK
- sta error
- rts
-.endproc
-
-.include "atari_tgi_common.inc"
+++ /dev/null
-;
-; Graphics driver for the 160x96x4 (CIO mode 7, ANTIC mode D) on the Atari.
-;
-; Fatih Aygun (2009)
-;
-
- .include "atari.inc"
- .include "zeropage.inc"
-
- .include "tgi-kernel.inc"
- .include "tgi-error.inc"
-
- .macpack generic
-
-; ******************************************************************************
-
- ; ----------------------------------------------------------------------
- ;
- ; Constants and tables
- ;
- ; ----------------------------------------------------------------------
-
-; Graphics mode
- grmode = 7
-; X resolution
- x_res = 160
-; Y resolution
- y_res = 96
-; Number of colors
- colors = 4
-; Pixels per byte
- ppb = 4
-; Screen memory size in bytes
- scrsize = x_res * y_res / ppb
-; Pixel aspect ratio
- aspect = $00CC ; based on 4/3 display
-; Free memory needed
- mem_needed = 3209
-; Number of screen pages
- pages = 1
-
-.rodata
- mask_table: ; Mask table to set pixels
- .byte %11000000, %00110000, %00001100, %00000011
- masks: ; Color masks
- .byte %00000000, %01010101, %10101010, %11111111
- bar_table: ; Mask table for BAR
- .byte %11111111, %00111111, %00001111, %00000011, %00000000
- default_palette:
- .byte $00, $0E, $32, $96
-
-.code
-
-; ******************************************************************************
-
-.proc SETPALETTE
-
- ; ----------------------------------------------------------------------
- ;
- ; SETPALETTE: Set the palette (in ptr1)
- ;
- ; ----------------------------------------------------------------------
-
-.code
- ; Copy the palette
- ldy #colors - 1
-loop: lda (ptr1),y
- sta palette,y
- dey
- bpl loop
-
- ; Get the color entries from the palette
- lda palette
- sta COLOR4
- lda palette + 1
- sta COLOR0
- lda palette + 2
- sta COLOR1
- lda palette + 3
- sta COLOR2
-
- ; Done, reset the error code
- lda #TGI_ERR_OK
- sta error
- rts
-.endproc
-
-.include "atari_tgi_common.inc"
+++ /dev/null
-;
-; Graphics driver for the 320x192x2 (CIO mode 8, ANTIC mode F) on the Atari.
-;
-; Fatih Aygun (2009)
-;
-
- .include "atari.inc"
- .include "zeropage.inc"
-
- .include "tgi-kernel.inc"
- .include "tgi-error.inc"
-
- .macpack generic
-
-; ******************************************************************************
-
- ; ----------------------------------------------------------------------
- ;
- ; Constants and tables
- ;
- ; ----------------------------------------------------------------------
-
-; Graphics mode
- grmode = 8
-; X resolution
- x_res = 320
-; Y resolution
- y_res = 192
-; Number of colors
- colors = 2
-; Pixels per byte
- ppb = 8
-; Screen memory size in bytes
- scrsize = x_res * y_res / ppb
-; Pixel aspect ratio
- aspect = $00CC ; based on 4/3 display
-; Free memory needed
- mem_needed = 7147
-; Number of screen pages
- pages = 1
-
-.rodata
- mask_table: ; Mask table to set pixels
- .byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001
- masks: ; Color masks
- .byte %00000000, %11111111
- bar_table: ; Mask table for BAR
- .byte %11111111, %01111111, %00111111, %00011111, %00001111, %00000111, %00000011, %00000001, %00000000
- default_palette:
- .byte $00, $0E
-.code
-
-; ******************************************************************************
-
-.proc SETPALETTE
-
- ; ----------------------------------------------------------------------
- ;
- ; SETPALETTE: Set the palette (in ptr1)
- ;
- ; ----------------------------------------------------------------------
-
-.code
- ; Copy the palette
- ldy #colors - 1
-loop: lda (ptr1),y
- sta palette,y
- dey
- bpl loop
-
- ; Get the color entries from the palette
- lda palette
- sta COLOR2
- lda palette + 1
- sta COLOR1
-
- ; Done, reset the error code
- lda #TGI_ERR_OK
- sta error
- rts
-.endproc
-
-.include "atari_tgi_common.inc"
+++ /dev/null
-;
-; Graphics driver for the 80x192x16b (CIO mode 9, ANTIC mode F, GTIA mode $40) on the Atari.
-;
-; Fatih Aygun (2009)
-;
-
- .include "atari.inc"
- .include "zeropage.inc"
-
- .include "tgi-kernel.inc"
- .include "tgi-error.inc"
-
- .macpack generic
-
-; ******************************************************************************
-
- ; ----------------------------------------------------------------------
- ;
- ; Constants and tables
- ;
- ; ----------------------------------------------------------------------
-
-; Graphics mode
- grmode = 9
-; X resolution
- x_res = 80
-; Y resolution
- y_res = 192
-; Number of colors
- colors = 16
-; Pixels per byte
- ppb = 2
-; Screen memory size in bytes
- scrsize = x_res * y_res / ppb
-; Pixel aspect ratio
- aspect = $0330 ; based on 4/3 display
-; Free memory needed
- mem_needed = 7147
-; Number of screen pages
- pages = 1
-
-.rodata
- mask_table: ; Mask table to set pixels
- .byte %11110000, %00001111
- masks: ; Color masks
- .byte $00, $11, $22, $33, $44, $55, $66, $77, $88, $99, $aa, $bb, $cc, $dd, $ee, $ff
- bar_table: ; Mask table for BAR
- .byte %11111111, %00001111, %00000000
- default_palette:
- .byte $00, $0F, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E
-
-.code
-
-; ******************************************************************************
-
-.proc SETPALETTE
-
- ; ----------------------------------------------------------------------
- ;
- ; SETPALETTE: Set the palette (in ptr1)
- ;
- ; ----------------------------------------------------------------------
-
-.code
- ; No palettes
- lda #TGI_ERR_INV_FUNC
- sta error
- rts
-.endproc
-
-.include "atari_tgi_common.inc"
--- /dev/null
+;
+; Graphics driver for the 80x192x9 (CIO mode 10, ANTIC mode F, GTIA mode $80) on the Atari.
+;
+; Fatih Aygun (2009)
+;
+
+ .include "atari.inc"
+ .include "zeropage.inc"
+
+ .include "tgi-kernel.inc"
+ .include "tgi-error.inc"
+
+ .macpack generic
+
+; ******************************************************************************
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; Constants and tables
+ ;
+ ; ----------------------------------------------------------------------
+
+; Graphics mode
+ grmode = 10
+; X resolution
+ x_res = 80
+; Y resolution
+ y_res = 192
+; Number of colors
+ colors = 9
+; Pixels per byte
+ ppb = 2
+; Screen memory size in bytes
+ scrsize = x_res * y_res / ppb
+; Pixel aspect ratio
+ aspect = $0330 ; based on 4/3 display
+; Free memory needed
+ mem_needed = 7147
+; Number of screen pages
+ pages = 1
+
+.rodata
+ mask_table: ; Mask table to set pixels
+ .byte %11110000, %00001111
+ masks: ; Color masks
+ .byte $00, $11, $22, $33, $44, $55, $66, $77, $88
+ bar_table: ; Mask table for BAR
+ .byte %11111111, %00001111, %00000000
+ default_palette:
+ .byte $00, $0E, $32, $96, $68, $C4, $74, $EE, $4A
+
+.code
+
+; ******************************************************************************
+
+.proc SETPALETTE
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; SETPALETTE: Set the palette (in ptr1)
+ ;
+ ; ----------------------------------------------------------------------
+
+.code
+ ; Copy the palette
+ ldy #colors - 1
+loop: lda (ptr1),y
+ sta palette,y
+ sta PCOLR0,y
+ dey
+ bpl loop
+
+ ; Done, reset the error code
+ lda #TGI_ERR_OK
+ sta error
+ rts
+.endproc
+
+.include "atari_tgi_common.inc"
--- /dev/null
+;
+; Graphics driver for the 80x192x16h (CIO mode 11, ANTIC mode F, GTIA mode $C0) on the Atari.
+;
+; Fatih Aygun (2009)
+;
+
+ .include "atari.inc"
+ .include "zeropage.inc"
+
+ .include "tgi-kernel.inc"
+ .include "tgi-error.inc"
+
+ .macpack generic
+
+; ******************************************************************************
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; Constants and tables
+ ;
+ ; ----------------------------------------------------------------------
+
+; Graphics mode
+ grmode = 11
+; X resolution
+ x_res = 80
+; Y resolution
+ y_res = 192
+; Number of colors
+ colors = 16
+; Pixels per byte
+ ppb = 2
+; Screen memory size in bytes
+ scrsize = x_res * y_res / ppb
+; Pixel aspect ratio
+ aspect = $0330 ; based on 4/3 display
+; Free memory needed
+ mem_needed = 7147
+; Number of screen pages
+ pages = 1
+
+.rodata
+ mask_table: ; Mask table to set pixels
+ .byte %11110000, %00001111
+ masks: ; Color masks
+ .byte $00, $11, $22, $33, $44, $55, $66, $77, $88, $99, $aa, $bb, $cc, $dd, $ee, $ff
+ bar_table: ; Mask table for BAR
+ .byte %11111111, %00001111, %00000000
+ default_palette:
+ .byte $00, $10, $20, $30, $40, $50, $60, $70, $80, $90, $A0, $B0, $C0, $D0, $E0, $F0
+
+.code
+
+; ******************************************************************************
+
+.proc SETPALETTE
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; SETPALETTE: Set the palette (in ptr1)
+ ;
+ ; ----------------------------------------------------------------------
+
+.code
+ ; No palettes
+ lda #TGI_ERR_INV_FUNC
+ sta error
+ rts
+.endproc
+
+.include "atari_tgi_common.inc"
--- /dev/null
+;
+; Graphics driver for the 160x192x2 (CIO mode 14, ANTIC mode C) on the Atari.
+;
+; Fatih Aygun (2009)
+;
+
+ .include "atari.inc"
+ .include "zeropage.inc"
+
+ .include "tgi-kernel.inc"
+ .include "tgi-error.inc"
+
+ .macpack generic
+
+; ******************************************************************************
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; Constants and tables
+ ;
+ ; ----------------------------------------------------------------------
+
+; Graphics mode
+ grmode = 14
+; X resolution
+ x_res = 160
+; Y resolution
+ y_res = 192
+; Number of colors
+ colors = 2
+; Pixels per byte
+ ppb = 8
+; Screen memory size in bytes
+ scrsize = x_res * y_res / ppb
+; Pixel aspect ratio
+ aspect = $0198 ; based on 4/3 display
+; Free memory needed
+ mem_needed = 3305
+; Number of screen pages
+ pages = 1
+
+.rodata
+ mask_table: ; Mask table to set pixels
+ .byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001
+ masks: ; Color masks
+ .byte %00000000, %11111111
+ bar_table: ; Mask table for BAR
+ .byte %11111111, %01111111, %00111111, %00011111, %00001111, %00000111, %00000011, %00000001, %00000000
+ default_palette:
+ .byte $00, $0E
+
+.code
+
+; ******************************************************************************
+
+.proc SETPALETTE
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; SETPALETTE: Set the palette (in ptr1)
+ ;
+ ; ----------------------------------------------------------------------
+
+.code
+ ; Copy the palette
+ ldy #colors - 1
+loop: lda (ptr1),y
+ sta palette,y
+ dey
+ bpl loop
+
+ ; Get the color entries from the palette
+ lda palette
+ sta COLOR4
+ lda palette + 1
+ sta COLOR0
+
+ ; Done, reset the error code
+ lda #TGI_ERR_OK
+ sta error
+ rts
+.endproc
+
+.include "atari_tgi_common.inc"
--- /dev/null
+;
+; Graphics driver for the 160x192x2 (CIO mode 15, ANTIC mode E) on the Atari.
+;
+; Fatih Aygun (2009)
+;
+
+ .include "atari.inc"
+ .include "zeropage.inc"
+
+ .include "tgi-kernel.inc"
+ .include "tgi-error.inc"
+
+ .macpack generic
+
+; ******************************************************************************
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; Constants and tables
+ ;
+ ; ----------------------------------------------------------------------
+
+; Graphics mode
+ grmode = 15
+; X resolution
+ x_res = 160
+; Y resolution
+ y_res = 192
+; Number of colors
+ colors = 4
+; Pixels per byte
+ ppb = 4
+; Screen memory size in bytes
+ scrsize = x_res * y_res / ppb
+; Pixel aspect ratio
+ aspect = $0198 ; based on 4/3 display
+; Free memory needed
+ mem_needed = 7147
+; Number of screen pages
+ pages = 1
+
+.rodata
+ mask_table: ; Mask table to set pixels
+ .byte %11000000, %00110000, %00001100, %00000011
+ masks: ; Color masks
+ .byte %00000000, %01010101, %10101010, %11111111
+ bar_table: ; Mask table for BAR
+ .byte %11111111, %00111111, %00001111, %00000011, %00000000
+ default_palette:
+ .byte $00, $0E, $32, $96
+
+.code
+
+; ******************************************************************************
+
+.proc SETPALETTE
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; SETPALETTE: Set the palette (in ptr1)
+ ;
+ ; ----------------------------------------------------------------------
+
+.code
+ ; Copy the palette
+ ldy #colors - 1
+loop: lda (ptr1),y
+ sta palette,y
+ dey
+ bpl loop
+
+ ; Get the color entries from the palette
+ lda palette
+ sta COLOR4
+ lda palette + 1
+ sta COLOR0
+ lda palette + 2
+ sta COLOR1
+ lda palette + 3
+ sta COLOR2
+
+ ; Done, reset the error code
+ lda #TGI_ERR_OK
+ sta error
+ rts
+.endproc
+
+.include "atari_tgi_common.inc"
--- /dev/null
+;
+; Graphics driver for the 40x24x4 (CIO mode 3, ANTIC mode 8) on the Atari.
+;
+; Fatih Aygun (2009)
+;
+
+ .include "atari.inc"
+ .include "zeropage.inc"
+
+ .include "tgi-kernel.inc"
+ .include "tgi-error.inc"
+
+ .macpack generic
+
+; ******************************************************************************
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; Constants and tables
+ ;
+ ; ----------------------------------------------------------------------
+
+; Graphics mode
+ grmode = 3
+; X resolution
+ x_res = 40
+; Y resolution
+ y_res = 24
+; Number of colors
+ colors = 4
+; Pixels per byte
+ ppb = 4
+; Screen memory size in bytes
+ scrsize = x_res * y_res / ppb
+; Pixel aspect ratio
+ aspect = $00CC ; based on 4/3 display
+; Free memory needed
+ mem_needed = 1
+; Number of screen pages
+ pages = 1
+
+.rodata
+ mask_table: ; Mask table to set pixels
+ .byte %11000000, %00110000, %00001100, %00000011
+ masks: ; Color masks
+ .byte %00000000, %01010101, %10101010, %11111111
+ bar_table: ; Mask table for BAR
+ .byte %11111111, %00111111, %00001111, %00000011, %00000000
+ default_palette:
+ .byte $00, $0E, $32, $96
+
+.code
+
+; ******************************************************************************
+
+.proc SETPALETTE
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; SETPALETTE: Set the palette (in ptr1)
+ ;
+ ; ----------------------------------------------------------------------
+
+.code
+ ; Copy the palette
+ ldy #colors - 1
+loop: lda (ptr1),y
+ sta palette,y
+ dey
+ bpl loop
+
+ ; Get the color entries from the palette
+ lda palette
+ sta COLOR4
+ lda palette + 1
+ sta COLOR0
+ lda palette + 2
+ sta COLOR1
+ lda palette + 3
+ sta COLOR2
+
+ ; Done, reset the error code
+ lda #TGI_ERR_OK
+ sta error
+ rts
+.endproc
+
+.include "atari_tgi_common.inc"
--- /dev/null
+;
+; Graphics driver for the 80x48x2 (CIO mode 4, ANTIC mode 9) on the Atari.
+;
+; Fatih Aygun (2009)
+;
+
+ .include "atari.inc"
+ .include "zeropage.inc"
+
+ .include "tgi-kernel.inc"
+ .include "tgi-error.inc"
+
+ .macpack generic
+
+; ******************************************************************************
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; Constants and tables
+ ;
+ ; ----------------------------------------------------------------------
+
+; Graphics mode
+ grmode = 4
+; X resolution
+ x_res = 80
+; Y resolution
+ y_res = 48
+; Number of colors
+ colors = 2
+; Pixels per byte
+ ppb = 8
+; Screen memory size in bytes
+ scrsize = x_res * y_res / ppb
+; Pixel aspect ratio
+ aspect = $00CC ; based on 4/3 display
+; Free memory needed
+ mem_needed = 1
+; Number of screen pages
+ pages = 1
+
+.rodata
+ mask_table: ; Mask table to set pixels
+ .byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001
+ masks: ; Color masks
+ .byte %00000000, %11111111
+ bar_table: ; Mask table for BAR
+ .byte %11111111, %01111111, %00111111, %00011111, %00001111, %00000111, %00000011, %00000001, %00000000
+ default_palette:
+ .byte $00, $0E
+
+.code
+
+; ******************************************************************************
+
+.proc SETPALETTE
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; SETPALETTE: Set the palette (in ptr1)
+ ;
+ ; ----------------------------------------------------------------------
+
+.code
+ ; Copy the palette
+ ldy #colors - 1
+loop: lda (ptr1),y
+ sta palette,y
+ dey
+ bpl loop
+
+ ; Get the color entries from the palette
+ lda palette
+ sta COLOR4
+ lda palette + 1
+ sta COLOR0
+
+ ; Done, reset the error code
+ lda #TGI_ERR_OK
+ sta error
+ rts
+.endproc
+
+.include "atari_tgi_common.inc"
--- /dev/null
+;
+; Graphics driver for the 80x48x4 (CIO mode 5, ANTIC mode A) on the Atari.
+;
+; Fatih Aygun (2009)
+;
+
+ .include "atari.inc"
+ .include "zeropage.inc"
+
+ .include "tgi-kernel.inc"
+ .include "tgi-error.inc"
+
+ .macpack generic
+
+; ******************************************************************************
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; Constants and tables
+ ;
+ ; ----------------------------------------------------------------------
+
+; Graphics mode
+ grmode = 5
+; X resolution
+ x_res = 80
+; Y resolution
+ y_res = 48
+; Number of colors
+ colors = 4
+; Pixels per byte
+ ppb = 4
+; Screen memory size in bytes
+ scrsize = x_res * y_res / ppb
+; Pixel aspect ratio
+ aspect = $00CC ; based on 4/3 display
+; Free memory needed
+ mem_needed = 185
+; Number of screen pages
+ pages = 1
+
+.rodata
+ mask_table: ; Mask table to set pixels
+ .byte %11000000, %00110000, %00001100, %00000011
+ masks: ; Color masks
+ .byte %00000000, %01010101, %10101010, %11111111
+ bar_table: ; Mask table for BAR
+ .byte %11111111, %00111111, %00001111, %00000011, %00000000
+ default_palette:
+ .byte $00, $0E, $32, $96
+
+.code
+
+; ******************************************************************************
+
+.proc SETPALETTE
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; SETPALETTE: Set the palette (in ptr1)
+ ;
+ ; ----------------------------------------------------------------------
+
+.code
+ ; Copy the palette
+ ldy #colors - 1
+loop: lda (ptr1),y
+ sta palette,y
+ dey
+ bpl loop
+
+ ; Get the color entries from the palette
+ lda palette
+ sta COLOR4
+ lda palette + 1
+ sta COLOR0
+ lda palette + 2
+ sta COLOR1
+ lda palette + 3
+ sta COLOR2
+
+ ; Done, reset the error code
+ lda #TGI_ERR_OK
+ sta error
+ rts
+.endproc
+
+.include "atari_tgi_common.inc"
--- /dev/null
+;
+; Graphics driver for the 160x96x2 (CIO mode 6, ANTIC mode B) on the Atari.
+;
+; Fatih Aygun (2009)
+;
+
+ .include "atari.inc"
+ .include "zeropage.inc"
+
+ .include "tgi-kernel.inc"
+ .include "tgi-error.inc"
+
+ .macpack generic
+
+; ******************************************************************************
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; Constants and tables
+ ;
+ ; ----------------------------------------------------------------------
+
+; Graphics mode
+ grmode = 6
+; X resolution
+ x_res = 160
+; Y resolution
+ y_res = 96
+; Number of colors
+ colors = 2
+; Pixels per byte
+ ppb = 8
+; Screen memory size in bytes
+ scrsize = x_res * y_res / ppb
+; Pixel aspect ratio
+ aspect = $00CC ; based on 4/3 display
+; Free memory needed
+ mem_needed = 1193
+; Number of screen pages
+ pages = 1
+
+.rodata
+ mask_table: ; Mask table to set pixels
+ .byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001
+ masks: ; Color masks
+ .byte %00000000, %11111111
+ bar_table: ; Mask table for BAR
+ .byte %11111111, %01111111, %00111111, %00011111, %00001111, %00000111, %00000011, %00000001, %00000000
+ default_palette:
+ .byte $00, $0E
+
+.code
+
+; ******************************************************************************
+
+.proc SETPALETTE
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; SETPALETTE: Set the palette (in ptr1)
+ ;
+ ; ----------------------------------------------------------------------
+
+.code
+ ; Copy the palette
+ ldy #colors - 1
+loop: lda (ptr1),y
+ sta palette,y
+ dey
+ bpl loop
+
+ ; Get the color entries from the palette
+ lda palette
+ sta COLOR4
+ lda palette + 1
+ sta COLOR0
+
+ ; Done, reset the error code
+ lda #TGI_ERR_OK
+ sta error
+ rts
+.endproc
+
+.include "atari_tgi_common.inc"
--- /dev/null
+;
+; Graphics driver for the 160x96x4 (CIO mode 7, ANTIC mode D) on the Atari.
+;
+; Fatih Aygun (2009)
+;
+
+ .include "atari.inc"
+ .include "zeropage.inc"
+
+ .include "tgi-kernel.inc"
+ .include "tgi-error.inc"
+
+ .macpack generic
+
+; ******************************************************************************
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; Constants and tables
+ ;
+ ; ----------------------------------------------------------------------
+
+; Graphics mode
+ grmode = 7
+; X resolution
+ x_res = 160
+; Y resolution
+ y_res = 96
+; Number of colors
+ colors = 4
+; Pixels per byte
+ ppb = 4
+; Screen memory size in bytes
+ scrsize = x_res * y_res / ppb
+; Pixel aspect ratio
+ aspect = $00CC ; based on 4/3 display
+; Free memory needed
+ mem_needed = 3209
+; Number of screen pages
+ pages = 1
+
+.rodata
+ mask_table: ; Mask table to set pixels
+ .byte %11000000, %00110000, %00001100, %00000011
+ masks: ; Color masks
+ .byte %00000000, %01010101, %10101010, %11111111
+ bar_table: ; Mask table for BAR
+ .byte %11111111, %00111111, %00001111, %00000011, %00000000
+ default_palette:
+ .byte $00, $0E, $32, $96
+
+.code
+
+; ******************************************************************************
+
+.proc SETPALETTE
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; SETPALETTE: Set the palette (in ptr1)
+ ;
+ ; ----------------------------------------------------------------------
+
+.code
+ ; Copy the palette
+ ldy #colors - 1
+loop: lda (ptr1),y
+ sta palette,y
+ dey
+ bpl loop
+
+ ; Get the color entries from the palette
+ lda palette
+ sta COLOR4
+ lda palette + 1
+ sta COLOR0
+ lda palette + 2
+ sta COLOR1
+ lda palette + 3
+ sta COLOR2
+
+ ; Done, reset the error code
+ lda #TGI_ERR_OK
+ sta error
+ rts
+.endproc
+
+.include "atari_tgi_common.inc"
--- /dev/null
+;
+; Graphics driver for the 320x192x2 (CIO mode 8, ANTIC mode F) on the Atari.
+;
+; Fatih Aygun (2009)
+;
+
+ .include "atari.inc"
+ .include "zeropage.inc"
+
+ .include "tgi-kernel.inc"
+ .include "tgi-error.inc"
+
+ .macpack generic
+
+; ******************************************************************************
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; Constants and tables
+ ;
+ ; ----------------------------------------------------------------------
+
+; Graphics mode
+ grmode = 8
+; X resolution
+ x_res = 320
+; Y resolution
+ y_res = 192
+; Number of colors
+ colors = 2
+; Pixels per byte
+ ppb = 8
+; Screen memory size in bytes
+ scrsize = x_res * y_res / ppb
+; Pixel aspect ratio
+ aspect = $00CC ; based on 4/3 display
+; Free memory needed
+ mem_needed = 7147
+; Number of screen pages
+ pages = 1
+
+.rodata
+ mask_table: ; Mask table to set pixels
+ .byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001
+ masks: ; Color masks
+ .byte %00000000, %11111111
+ bar_table: ; Mask table for BAR
+ .byte %11111111, %01111111, %00111111, %00011111, %00001111, %00000111, %00000011, %00000001, %00000000
+ default_palette:
+ .byte $00, $0E
+.code
+
+; ******************************************************************************
+
+.proc SETPALETTE
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; SETPALETTE: Set the palette (in ptr1)
+ ;
+ ; ----------------------------------------------------------------------
+
+.code
+ ; Copy the palette
+ ldy #colors - 1
+loop: lda (ptr1),y
+ sta palette,y
+ dey
+ bpl loop
+
+ ; Get the color entries from the palette
+ lda palette
+ sta COLOR2
+ lda palette + 1
+ sta COLOR1
+
+ ; Done, reset the error code
+ lda #TGI_ERR_OK
+ sta error
+ rts
+.endproc
+
+.include "atari_tgi_common.inc"
--- /dev/null
+;
+; Graphics driver for the 80x192x16b (CIO mode 9, ANTIC mode F, GTIA mode $40) on the Atari.
+;
+; Fatih Aygun (2009)
+;
+
+ .include "atari.inc"
+ .include "zeropage.inc"
+
+ .include "tgi-kernel.inc"
+ .include "tgi-error.inc"
+
+ .macpack generic
+
+; ******************************************************************************
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; Constants and tables
+ ;
+ ; ----------------------------------------------------------------------
+
+; Graphics mode
+ grmode = 9
+; X resolution
+ x_res = 80
+; Y resolution
+ y_res = 192
+; Number of colors
+ colors = 16
+; Pixels per byte
+ ppb = 2
+; Screen memory size in bytes
+ scrsize = x_res * y_res / ppb
+; Pixel aspect ratio
+ aspect = $0330 ; based on 4/3 display
+; Free memory needed
+ mem_needed = 7147
+; Number of screen pages
+ pages = 1
+
+.rodata
+ mask_table: ; Mask table to set pixels
+ .byte %11110000, %00001111
+ masks: ; Color masks
+ .byte $00, $11, $22, $33, $44, $55, $66, $77, $88, $99, $aa, $bb, $cc, $dd, $ee, $ff
+ bar_table: ; Mask table for BAR
+ .byte %11111111, %00001111, %00000000
+ default_palette:
+ .byte $00, $0F, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E
+
+.code
+
+; ******************************************************************************
+
+.proc SETPALETTE
+
+ ; ----------------------------------------------------------------------
+ ;
+ ; SETPALETTE: Set the palette (in ptr1)
+ ;
+ ; ----------------------------------------------------------------------
+
+.code
+ ; No palettes
+ lda #TGI_ERR_INV_FUNC
+ sta error
+ rts
+.endproc
+
+.include "atari_tgi_common.inc"
;
.export _tgi_static_stddrv
- .import _atari8_tgi
+ .import _atr8_tgi
.rodata
-_tgi_static_stddrv := _atari8_tgi
+_tgi_static_stddrv := _atr8_tgi
.rodata
-_tgi_stddrv: .asciiz "atari8.tgi"
+_tgi_stddrv: .asciiz "atr8.tgi"