; Atari 8-bit "Hello World" sample code ; Written by Daniel Boris (danlb_2000@yahoo.com) ; Modified by Steven Hugg @8bitworkshop ; Assemble with DASM ; processor 6502 include "atari.inc" org $a000 ;Start of left cartridge area Start ldx #(dlistend-dlist) dlloop ;Create Display List lda dlist,x ;Get byte sta $1000,x ;Copy to RAM dex ;next byte bpl dlloop lda #$06 sta CHACTL ;Set Character Control lda #$28 sta COLOR0+0 lda #$0F sta COLOR0+1 lda #$d6 sta COLOR0+2 lda #$58 sta COLOR0+3 lda #$84 sta COLOR0+4 ; bakground lda #$00 ;Set Display list pointer sta SDLSTL ;Shadow DLISTL lda #$10 sta SDLSTH ;Shadow DLISTH lda #$e0 ;Set Charcter Set Base sta CHBAS lda #$22 ;Enable DMA lda #$21 sta SDMCTL ;Shadow DMACTL print ldy #$00 cld prloop lda text1,y ;Get character beq wait cmp #$60 bcs lower sec sbc #$20 ;Convert to ATASCII lower sta $1800,y ;Store in video memory iny ;Next character bne prloop wait nop jmp wait ;Display list data (starts at $1000) dlist .byte $70,$70 ;16 blank scanlines .byte $42,$00,$18,$02,$70 ;mode 2 @ $1800 .byte $43,$00,$18,$70 ;mode 3 @ $1800 .byte $44,$00,$18,$70 ;mode 4 @ $1800 .byte $45,$00,$18,$70 ;mode 5 @ $1800 .byte $46,$00,$18,$70 ;mode 6 @ $1800 .byte $47,$00,$18,$70 ;mode 7 @ $1800 .byte $48,$00,$18,$08,$70 ;mode 2 @ $1800 .byte $49,$00,$18,$70 ;mode 3 @ $1800 .byte $4a,$00,$18,$70 ;mode 4 @ $1800 .byte $4b,$00,$18,$70 ;mode 5 @ $1800 .byte $4c,$00,$18,$70 ;mode 6 @ $1800 .byte $4d,$00,$18,$70 ;mode 7 @ $1800 .byte $4e,$00,$18,$70 ;mode 7 @ $1800 .byte $4f,$00,$18,$70 ;mode 7 @ $1800 .byte $41,$00,$10 ;JMP -> $1000 dlistend ;Text data text1 .byte "Hello World! " .byte $a1,$a2,$a3 .repeat 16 .byte 32 .repend .byte "12345" .byte 0 ;Cartridge footer org CARTCS .word Start ; cold start address .byte $00 ; 0 == cart exists .byte $04 ; boot cartridge .word Start ; start