Jump to content

Eagle

Members
  • Posts

    641
  • Joined

  • Last visited

  • Days Won

    4

Posts posted by Eagle

  1. Just example of code in assembly

    Showing the difference between code for A7800 and MariaEci

    It's just showing one sprite with random data.

     

    ;
    ;change here to chose with platform you want
    MariaEci equ yes
    ;
    YES	equ 1	;code for Atari XL/XE
    NO	equ 0	;code for Atari7800
    ;
    
    	.if MariaEci=no
    	opt f+h-m+
    	.endif
    
    	.if MariaEci=Yes
    maria_pbi		= $08
    MARIA_BASE 		= $d100
    MIRQ_STATUS		= MARIA_BASE + $10
    MIRQ_FLCLR		= MARIA_BASE + $10
    MIRQ_CONTROL	= MARIA_BASE + $11
    MIRQ_LVECTOR	= MARIA_BASE + $12
    MIRQ_HVECTOR	= MARIA_BASE + $13
    BGEN			= MARIA_BASE +$47
    EXT256KB		= MARIA_BASE +$4E
    PORTB			= $D301 
    DMACTL			= $d400
    NMIEN			= $d40e
    PDVREG 			= $D1FF  ;;; PBI IRQ FLAG
    PDVRS 			= $0248
    BACKGRND        = MARIA_BASE + $20     ;Background Color
    MSTAT           = MARIA_BASE +$28
    DPPH            = MARIA_BASE +$2C
    DPPL            = MARIA_BASE +$30
    CHARBASE        = MARIA_BASE +$34 
    OFFSET	        = MARIA_BASE +$38
    CTRL            = MARIA_BASE +$3C
    
    P0C1            =     MARIA_BASE +$21     ;Palette 0 - Color 1
    P0C2            =     MARIA_BASE +$22     ;Palette 0 - Color 2
    P0C3            =     MARIA_BASE +$23     ;Palette 0 - Color 3
    	.else
    
    INPTCTRL	=	$01	;INPUT PORT CONTROL ("VBLANK" IN TIA )
    BACKGRND	=	$20	;BACKGROUND COLOR
    P0C1		=	$21	;PALETTE 0 - COLOR 1
    P0C2		=	$22	;	   - COLOR 2
    P0C3		=	$23	;	   - COLOR 3
    MSTAT		=	$28	;MARIA STATUS
    DPPH		=	$2C	;DISPLAY LIST LIST POINT HIGH BYTE
    DPPL		=	$30	;DISPLAY LIST LIST POINT LOW BYTE
    CHBASE		=	$34	;CHARACTER BASE ADDRESS
    OFFSET		=	$38	;FOR FUTURE EXPANSION - STORE ZER0 HERE
    CTRL		=	$3C	;MARIA CONTROL REGISTER
    	
    	.endif
    ;Warning	
    ;no cart header for 7800
    ;use 7800header tool and 7800sign
    ;http://7800.8bitdev.org/index.php/7800AsmDevKit
    
    		org $8000
    Start
    		.if MariaEci=Yes
    			sei          
    			lda PORTB	 ; disable basic
    			ora #$01
    			sta PORTB
    			lda #$00
    			sta DMACTL
    			sta NMIEN
    			lda #maria_pbi 
    			sta PDVRS 
    			sta PDVREG       ; --- pbi maria init
    			lda #$00
    			sta MIRQ_CONTROL ; maria irq off
    			sta BGEN
    			sta EXT256KB
    			sta OFFSET
    		.else
    			sei					;Disable interrupts
    			cld					;Clear decimal mode
    			MVA #$07 INPTCTRL
    			MVA	#$7F CTRL
    			MVA	#$00 OFFSET
    			MVA #$00 INPTCTRL
    			ldx	#$FF			;Reset stack pointer
    			txs
    		.endif
    
    		mva	#$00 BACKGRND\ mva #$08 P0C1\ mva #$14 P0C2\ mva #$0c P0C3
    		
    		jsr	WaitVBLANK	;wait until no DMA would happen
    		lda	#<DLL	;set display list list address
    		sta DPPL
    	    lda	#>DLL
    	    sta	DPPH	
    
    		lda	#$40
    		sta	CTRL	;DMA on, 160A/160B mode
    loop	jmp loop
    
    DLL
    		.rept 3
    		.byte	$0F,>emptyline,<emptyline	;$0F - DLL entry 16 lines
    		.endr
    
    		.byte 	$0F,>onelineDL,<onelineDL
    		
    		.rept 16
    		.byte	$0F,>emptyline,<emptyline
    		.endr
    
    ;DL entry 4 bytes
    onelineDL		.byte <sprite,$1e,>sprite,78	;LSB,Size 2 byte + colour pallet 0,MSB,XPOS
    			.byte 0,0	;end of Displaylist
    ;
    emptyline	.byte 0,0
    
    WaitVBLANK:	
    WaitVBoff:
    		bit		MSTAT
    		bmi		WaitVBoff
    WaitVBon:
    		bit		MSTAT
    		bpl		WaitVBon
    		rts
    
    ;Dummy nmi/irq
    Dummy	RTI
    		org $A000
    sprite
    		.rept 16 #
    		.byte [:1*16]+:1,[:1*16]+:1		;random data to show sprite - 4096 bytes
    		.align 256						;gfx data every 256 bytes
    		.endr
    		
    
    		.if MariaEci=YES
    		run start
    		.else
    
    	 ORG	$fff8
    	.byte	$FF		;Region verification
    	.byte	$87		;ROM start $8000
    	.word	Dummy
    	.word	START
    	.word	Dummy
    		.endif
    		

     

    Multiplatform.asm

    • Like 2
  2. On 9/24/2023 at 10:13 PM, Defender_2600 said:

    * there it is:

     

    MariaECI can have extra 320x240 background in 256 colours

     

    13 hours ago, Philsan said:

    Would it be possible a MariaPBI?

     

    Yes.

     

    13 hours ago, Philsan said:

    I know it's a completely different graphic architecture, but how would you compare it to VBXE?

     

    I don't want to reveal too many details. But on top of graphics you will have very powerful music card and ram extension (32MB in 256KB blocks)

    5 hours ago, eed002 said:

    6) Last, is there a Discord site for 7800 programming?

     

    AtariAge discord (Homebrew-chat) or AArea if you speak Polish :D 

    5 hours ago, eed002 said:

    The best I found was: http://7800.8bitdev.org/

     

    This is good source.

     

    https://github.com/tebe6502/Mad-Assembler/tree/master/examples

     

    7800 Basic as well.

    BTW, one of the people involved in this project managed to run the 7800basic code on MariaEci :D

     

     

    • Like 1
    • Thanks 1
  3. Slowly I need to book some space for SN and SN2 cart before we move further.

    Also we need bit for our SN cart family :D 

     

    This is already implemented in our dev MiSTer core 

    Thanks

     

    SN Cart2 Registers
    POINTER_BASE 	equ	   $400
    
    MEM0DATA		equ 	   POINTER_BASE			;Memory data in/out
    MEM1DATA		equ 	   POINTER_BASE + $01	;Memory data in/out
    MEM2DATA		equ 	   POINTER_BASE + $02	;Memory data in/out
    MEM3DATA		equ 	   POINTER_BASE + $03	;Memory data in/out
    
    MEM1ADR0		equ	   POINTER_BASE + $04	;Memory address 0
    MEM1ADR1		equ	   POINTER_BASE + $05	;Memory address 1
    MEM1ADR2		equ	   POINTER_BASE + $06	;Memory address 2
    MEM1ADR3		equ	   POINTER_BASE + $07	;Memory address 3 
    
    MEM2ADR0		equ	   POINTER_BASE + $08	;Memory address 0
    MEM2ADR1		equ	   POINTER_BASE + $09	;Memory address 1
    MEM2ADR2		equ	   POINTER_BASE + $0A	;Memory address 2
    MEM2ADR3		equ	   POINTER_BASE + $0B	;Memory address 3 
    
    MEM3ADR0		equ	   POINTER_BASE + $0C	;Memory address 0
    MEM3ADR1		equ	   POINTER_BASE + $0D	;Memory address 1
    MEM3ADR2		equ	   POINTER_BASE + $0E	;Memory address 2
    MEM3ADR3		equ	   POINTER_BASE + $0F	;Memory address 3 
    
    MEM0ADR0		equ	   POINTER_BASE + $10	;Memory address 0
    MEM0ADR1		equ	   POINTER_BASE + $11	;Memory address 1
    MEM0ADR2		equ	   POINTER_BASE + $12	;Memory address 2
    MEM0ADR3		equ	   POINTER_BASE + $13	;Memory address 3 
    
    MEM0INC			equ 	   POINTER_BASE + $14	;Memory address increment
    MEM1INC			equ 	   POINTER_BASE + $15	;Memory address increment
    MEM2INC			equ 	   POINTER_BASE + $16	;Memory address increment
    MEM3INC			equ 	   POINTER_BASE + $17	;Memory address increment
    
    
    MEM0DEC			equ 	   POINTER_BASE + $18	;Memory address decrement
    MEM1DEC			equ 	   POINTER_BASE + $19	;Memory address decrement
    MEM2DEC			equ 	   POINTER_BASE + $1A	;Memory address decrement
    MEM3DEC			equ 	   POINTER_BASE + $1B	;Memory address decrement
    
    
    SN76489 	equ $43F
    SN76489dual 	equ $43E
    
    ; FPGA VGM player for YM2151, YM2612, SN76489
    VGMREG	equ $462; --  register number VGMPlayer
    VGMDAT	equ $463; --  read/write register VGMPlayer
    
    ;VGMREG
    ;$00		- vgm_control - bit7 = on/off play, bit6 = on/off loop 
    ;$01 - $04 - 32bit vgm_play_address (to vgmdat)
    ;$05 - $08 - 32bit vgm_loop_address (to vgmdat)
    
    YM2612BASE equ	$464		;($464-$467)
    
    MemReg 		equ $FFFF	;bit 0 - lower/upper 16KB ram, bit 1 - mirror ram A8, bit 2 - mirror ram A9, bit 3 - reserved, bit 4 - mirror A8/A9 only for lower 8KB ram
    
    ;************* 4KB banks* ***********************
    $8000 -> write 0-255 (select 4KB bank from 0-255)
    $9000 -> write 0-255 (select 4KB bank from 0-255)
    $A000 -> write 0-255 (select 4KB bank from 0-255)
    $B000 -> write 0-255 (select 4KB bank from 0-255)
    $C000 -> write 0-255 (select 4KB bank from 0-255)
    $D000 -> write 0-255 (select 4KB bank from 0-255)
    $E000 -> write 0-255 (select 4KB bank from 0-255)
    
    $Fxxx - it's fix

     

    • Like 1
×
×
  • Create New...