changeset 2650:538d8fdbaeba

Added fuji and ataridemo.dsk
author Boisy Pitre <boisy.pitre@nuance.com>
date Mon, 02 Apr 2012 20:51:09 -0500
parents 928b4a062979
children 3f4ab32b4106
files defs/atari.d level1/atari/cmds/fuji.asm level1/atari/cmds/fujimem.asm level1/atari/cmds/fujitune.asm level1/atari/cmds/makefile level1/atari/makefile
diffstat 6 files changed, 468 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/defs/atari.d	Mon Apr 02 20:27:29 2012 -0500
+++ b/defs/atari.d	Mon Apr 02 20:51:09 2012 -0500
@@ -310,4 +310,36 @@
 NMIEN          equ       ANTIC+$0E           ;NMI enable
 NMIRES         equ       ANTIC+$0F           ;NMI interrupt status reset
 
+
+*************************************************
+** Display List Equates
+ADLI           equ       $80                 ;display list interrupt
+AVB            equ       $40                 ;vertical blank
+ALMS           equ       $40                 ;set screen data address
+AVSCR          equ       $20
+AHSCR          equ       $10
+AJMP           equ       $01                 ;jump
+AEMPTY1        equ       $00
+AEMPTY2        equ       $10
+AEMPTY3        equ       $20
+AEMPTY4        equ       $30
+AEMPTY5        equ       $40
+AEMPTY6        equ       $50
+AEMPTY7        equ       $60
+AEMPTY8        equ       $70
+AMODE2         equ       $02
+AMODE3         equ       $03
+AMODE4         equ       $04
+AMODE5         equ       $05
+AMODE6         equ       $06
+AMODE7         equ       $07
+AMODE8         equ       $08
+AMODE9         equ       $09
+AMODEA         equ       $0A
+AMODEB         equ       $0B
+AMODEC         equ       $0C
+AMODED         equ       $0D
+AMODEE         equ       $0E
+AMODEF         equ       $0F
+
                endc      
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/atari/cmds/fuji.asm	Mon Apr 02 20:51:09 2012 -0500
@@ -0,0 +1,230 @@
+****************************************
+* Sample kick application for Liber809
+* James Wilkinson
+* v.2 - March 28, 2012
+****************************************
+
+         nam   Fuji
+         ttl   Fuji Demo
+
+         ifp1
+         use   defsfile
+            use     atari.d
+         endc
+
+tylg     set   Prgrm+Objct   
+atrv     set   ReEnt+rev
+rev      set   $00
+edition  set   0
+
+* Here are some tweakable options
+STACKSZ  set   128      estimated stack size in bytes
+PARMSZ   set   256      estimated parameter size in bytes
+
+         mod   eom,name,tylg,atrv,start,size
+
+         org   0
+Clr0Next  rmb   1
+SndAddrs  rmb  8
+SndDurs   rmb  8
+* Finally the stack for any PSHS/PULS/BSR/LBSRs that we might do
+         rmb   STACKSZ+PARMSZ
+size     equ   .
+
+name     fcs   /Merge/
+         fcb   edition    change to 6, as merge 5 has problems?
+
+GRSIZE      equ     40                  ;memory per graphics mode line
+GRCOUNT     equ     80                  ;total graphics mode lines
+TXTSIZE     equ     40                  ;memory per text mode line
+TXTCOUNT    equ     4                   ;total lines of text
+
+CLR0        equ     $10                 ;Fuji
+CLR1        equ     $0E                 ;text foreground
+CLR2        equ     $00                 ;text background
+
+VOICES      equ     2                   ;number of sound channels to use
+
+
+* Screen display areas
+            use     fujimem.asm
+
+* Music data
+            use     fujitune.asm
+
+
+* Custom display list:
+* - 3 empty mode lines, to prevent overscan
+* - 2 mode lines of ANTIC mode $2 (text)
+* - 80 mode lines of ANTIC mode $D (graphics) with display list interrupts
+* - 2 mode lines of ANTIC mode $2 (text)
+DList       fcb     AEMPTY8,AEMPTY8,AEMPTY8
+            fcb     ALMS+AMODE2
+DListT1     fdbs    FujiTxt1
+            fcb     AMODE2
+            fcb     ALMS+ADLI+AMODED
+DListM      fdbs    FujiMem
+            fill    ADLI+AMODED,$4e
+            fcb     AMODED
+            fcb     ALMS+AMODE2
+DListT2     fdbs    FujiTxt2
+            fcb     AMODE2
+            fcb     AVB+AJMP
+DListPtr    fdbs    DList
+
+****************************************
+* Main entry point
+
+start       equ     *
+* Initialize POKEY sound
+InitPokey   lda     #$03          
+            sta     SKCTL               ;set POKEY 2-tone mode
+            lda     #$00          
+            sta     AUDCTL              ;set POKEY clock base to 15 KHz
+            bsr     InitSnd
+
+* Initialize GTIA color registers
+InitClr     lda     #CLR0
+            sta     COLPF0
+            lda     #CLR1
+            sta     COLPF1
+            lda     #CLR2
+            sta     COLPF2
+
+* Convert static text, using simplified conversion to ANTIC screen characters
+InitTxt     leax    FujiTxt1,pcr
+            ldy     #TXTSIZE*TXTCOUNT
+loop@       lda     ,x
+            suba    #$20
+            sta     ,x+
+            leay    -1,y
+            bne     loop@
+
+* Set up custom display list
+InitDL      leax    DList,pcr
+            tfr     x,d
+            exg     a,b
+            std     DLISTL              ;point ANTIC to custom display list
+            std     DListPtr,pcr
+
+            leax    FujiTxt1,pcr
+            tfr     x,d
+            exg     a,b
+            std     DListT1,pcr
+
+            leax    FujiMem,pcr
+            tfr     x,d
+            exg     a,b
+            std     DListM,pcr
+
+            leax    FujiTxt2,pcr
+            tfr     x,d
+            exg     a,b
+            std     DListT2,pcr
+
+* Set up and enable non-maskable interrupt
+InitNMI     leax    NMIVect,pcr
+            stx     $fffc               ;point 6809 to custom interrupt vector
+            lda     #$C0                
+            sta     NMIEN               ;enable both display list and vertical blank interrupts
+
+* End of main program
+End         bra     End
+
+
+* Initialize sound pointers
+InitSnd
+            ldx     #SndAddrs
+            leay    Track0,pcr          ;initialize pointer to track 0
+            sty     ,x++
+            leay    Track1,pcr          ;initialize pointer to track 1
+            sty     ,x  
+            rts
+
+* Single vector to handle all non-maskable interrupts
+NMIVect     pshs    d,x,y               ;save register used during interrupt
+            lda     NMIST
+DLITest@    anda    #%10000000          ;was interrupt generated by display list?
+            beq     VBITest@
+            bsr     DLIVect             ;if so, run DLI routine
+VBITest@    lda     NMIST
+            anda    #%01000000          ;was interrupt generated by vertical blank?
+            beq     done@
+            bsr     VBIVect             ;if so, run VBI routine
+done@       puls    d,x,y               ;restore register
+            rti
+
+DLIVect     lda     Clr0Next            ;get color for next mode line
+            adda    #2                  ;adjust for rainbow effect
+            cmpa    #CLR0               ;skip grey tones
+            bhi     dcycle@
+            adda    #CLR0
+dcycle@     sta     Clr0Next            ;save shadow for next interrupt
+            sta     WSYNC               ;wait for horizontal sync
+            sta     COLPF0              ;update GTIA color register
+            rts
+
+VBIVect     bsr     SndVect
+            lda     Clr0Next            ;get color for next mode line
+            cmpa    #$af                ;adjust for skipped grey tones
+            bhi     vcycle@
+            suba    #CLR0
+vcycle@     suba    #$a1                ;reset color for top line of Fuji
+            sta     Clr0Next            ;save shadow
+            bsr     DLIVect             ;chain to DLI routine
+            rts
+
+SndVect     ldd     #$0000        
+            tfr     d,x                 ;start with voice #0
+
+PlayVoice   lda     SndDurs,x  
+            bne     UpdateDur           ;skip work if same note keeps playing
+
+LoadNote    tfr     x,d
+            lslb
+            tfr     d,x
+            ldy     SndAddrs,x          ;load from word offset for current note
+            lsrb
+            tfr     d,x
+            leay    2,y                 
+            lda     ,y
+            sta     SndDurs,x           ;save duration
+            ora     ,y
+            bne     PlayNote
+            pshs    x
+            bsr     InitSnd             ;loop back to beginning at end of tune
+            puls    x
+            bra     LoadNote
+
+PlayNote    leay    -2,y
+            lda     ,y+
+            pshs    a                   ;save frequency
+            lda     ,y
+            pshs    a                   ;save volume
+            tfr     x,d          
+            lslb                 
+            tfr     d,y                 ;y = x * 2
+            puls    a                   ;restore volume
+            adda    #$a0
+            sta     AUDC1,y             ;set pure tone and volume
+            puls    a                   ;restore frequency
+            sta     AUDF1,y             ;set frequency
+            tfr     x,d
+            lslb
+            tfr     d,x
+            ldd     SndAddrs,x          ;load from word offset for current note
+            addd    #$0003                
+            std     SndAddrs,x          ;point to next note
+            tfr     x,d
+            lsrb
+            tfr     d,x
+
+UpdateDur   dec     SndDurs,x           ;decrement remaining duration
+            leax    1,x
+            cmpx    #VOICES
+            bne     PlayVoice           ;play next voice
+            rts
+
+         emod
+eom      equ   *
+         end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/atari/cmds/fujimem.asm	Mon Apr 02 20:51:09 2012 -0500
@@ -0,0 +1,99 @@
+****************************************
+* Sample kick application for Liber809
+* James Wilkinson
+* v.2 - March 28, 2012
+****************************************
+
+****************************************
+* Color table (2 bits/pixel):
+*       [  ] [ #] [# ] [##]
+* PF0    $0   $1   $4   $5
+* PF1    $0   $2   $8   $a
+* PF2    $0   $3   $c   $f
+
+FujiMem     fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$2a,$80,$aa,$a0,$2a,$80,$2a,$80,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$02,$a8,$02,$a8,$02,$a8,$02,$a8,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$a0,$00,$a0,$00,$a0,$a0,$a0,$a0,$00,$00,$05,$55,$50,$55,$55,$55,$55,$05,$55,$50,$00,$00,$0a,$00,$0a,$0a,$0a,$0a,$0a,$0a,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$aa,$80,$aa,$80,$a2,$a0,$02,$80,$00,$00,$55,$55,$50,$55,$55,$55,$55,$05,$55,$55,$00,$00,$0a,$a8,$02,$a8,$0a,$2a,$02,$aa,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$a0,$a0,$00,$a0,$a8,$a0,$0a,$00,$00,$00,$55,$55,$50,$55,$55,$55,$55,$05,$55,$55,$00,$00,$0a,$0a,$0a,$0a,$0a,$8a,$00,$0a,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$a0,$a0,$a0,$a0,$a0,$a0,$28,$00,$00,$00,$55,$55,$50,$55,$55,$55,$55,$05,$55,$55,$00,$00,$0a,$0a,$0a,$0a,$0a,$0a,$00,$28,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$2a,$80,$2a,$80,$2a,$80,$aa,$a0,$00,$00,$55,$55,$50,$55,$55,$55,$55,$05,$55,$55,$00,$00,$02,$a8,$02,$a8,$02,$a8,$02,$a0,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$50,$55,$55,$55,$55,$05,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$50,$55,$55,$55,$55,$05,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$50,$55,$55,$55,$55,$05,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$50,$55,$55,$55,$55,$05,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$50,$55,$55,$55,$55,$05,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$50,$55,$55,$55,$55,$05,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$50,$55,$55,$55,$55,$05,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$00,$55,$55,$55,$55,$00,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$00,$55,$55,$55,$55,$00,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$00,$55,$55,$55,$55,$00,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$00,$55,$55,$55,$55,$00,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$00,$55,$55,$55,$55,$00,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$00,$55,$55,$55,$55,$00,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$55,$00,$55,$55,$55,$55,$00,$55,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$50,$00,$55,$55,$55,$55,$00,$05,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$50,$00,$55,$55,$55,$55,$00,$05,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$50,$00,$55,$55,$55,$55,$00,$05,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$50,$00,$55,$55,$55,$55,$00,$05,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$50,$00,$55,$55,$55,$55,$00,$05,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$55,$00,$00,$55,$55,$55,$55,$00,$00,$55,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$55,$00,$00,$55,$55,$55,$55,$00,$00,$55,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$55,$55,$55,$55,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$55,$55,$55,$55,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$55,$50,$00,$00,$55,$55,$55,$55,$00,$00,$05,$55,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$55,$50,$00,$00,$55,$55,$55,$55,$00,$00,$05,$55,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$50,$00,$00,$55,$55,$55,$55,$00,$00,$05,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$55,$55,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$55,$55,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$55,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$55,$55,$55,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$55,$55,$55,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$55,$55,$55,$50,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$05,$55,$55,$55,$55,$55,$50,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$50,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$05,$55,$55,$55,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$50,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$05,$55,$55,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$50,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$05,$55,$55,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$00,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$50,$00,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$00,$05,$55,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$50,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$05,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$55,$55,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+            fcb     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+
+* Text display area
+FujiTxt1    fcc     "     Liber809 Hardware and Firmware     "
+            fcc     "          (C) Boisy Pitre 2012          "
+FujiTxt2    fcc     "           Fuji Demo by Slor            "
+            fcc     "      http://liber809.blogspot.com      "
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/atari/cmds/fujitune.asm	Mon Apr 02 20:51:09 2012 -0500
@@ -0,0 +1,91 @@
+****************************************
+* Sample kick application for Liber809
+* James Wilkinson
+* v.2 - March 28, 2012
+****************************************
+
+* Note periods
+B4          equ     255
+C5          equ     243
+C5S         equ     230
+D5          equ     217
+D5S         equ     204
+E5          equ     193
+F5          equ     182
+F5S         equ     173
+G5          equ     162
+G5S         equ     153
+A5          equ     144
+A5S         equ     136
+B5          equ     128
+C6          equ     121
+C6S         equ     114
+D6          equ     108
+D6S         equ     102
+E6          equ     96
+F6          equ     91
+F6S         equ     85
+G6          equ     81
+G6S         equ     76
+A6          equ     72
+A6S         equ     68
+B6          equ     64
+C7          equ     60
+C7S         equ     57
+D7          equ     53
+D7S         equ     50
+E7          equ     47
+F7          equ     45
+F7S         equ     42
+G7          equ     40
+G7S         equ     37
+A7          equ     35
+A7S         equ     33
+B7          equ     31
+C8          equ     29
+C8S         equ     27
+D8          equ     26
+D8S         equ     24
+E8          equ     23
+F8          equ     22
+F8S         equ     21
+G8          equ     19
+G8S         equ     18
+A8          equ     17
+A8S         equ     16
+B8          equ     15
+C9          equ     14
+
+* Note volume levels
+VOL03       equ     1
+VOL05       equ     1
+VOL10       equ     3
+VOL20       equ     7
+VOL40       equ     10
+VOL52       equ     13
+VOL64       equ     15
+
+* Note durations
+DUR01       equ     4
+DUR03       equ     DUR01*3
+DUR07       equ     DUR01*7
+DUR11       equ     DUR01*11
+
+****************************************
+* Track for each voice, in triplets of
+* period, volume, and duration
+
+Track0      fcb     F6,VOL40,DUR01,C6,VOL05,DUR01,E6,VOL40,DUR01,G5,VOL03,DUR01,C6,VOL40,DUR01,F6,VOL05,DUR01,D6,VOL40,DUR01,E6,VOL05,DUR01
+            fcb     F6,VOL40,DUR01,C6,VOL03,DUR01,E6,VOL40,DUR01,D6,VOL05,DUR01,C6,VOL40,DUR01,F6,VOL05,DUR01,G5,VOL40,DUR01,E6,VOL05,DUR01
+            fcb     F6,VOL40,DUR01,C6,VOL05,DUR01,E6,VOL40,DUR01,G5,VOL03,DUR01,C6,VOL40,DUR01,F6,VOL05,DUR01,D6,VOL40,DUR01,E6,VOL05,DUR01
+            fcb     F6,VOL40,DUR01,C6,VOL03,DUR01,E6,VOL40,DUR01,D6,VOL05,DUR01,C6,VOL40,DUR01,F6,VOL05,DUR01,G5,VOL40,DUR01,E6,VOL05,DUR01
+            fcb     F6,VOL40,DUR01,C6,VOL05,DUR01,E6,VOL40,DUR01,G5,VOL03,DUR01,C6,VOL40,DUR01,F6,VOL05,DUR01,D6,VOL40,DUR01,E6,VOL05,DUR01
+            fcb     F6,VOL40,DUR01,C6,VOL03,DUR01,E6,VOL40,DUR01,D6,VOL05,DUR01,C6,VOL40,DUR01,F6,VOL05,DUR01,G5,VOL40,DUR01,E6,VOL05,DUR01
+            fcb     F6,VOL40,DUR01,C6,VOL05,DUR01,E6,VOL40,DUR01,G5,VOL03,DUR01,C6,VOL40,DUR01,F6,VOL05,DUR01,D6,VOL40,DUR01,E6,VOL05,DUR01
+            fcb     F6,VOL40,DUR01,C6,VOL03,DUR01,E6,VOL40,DUR01,D6,VOL05,DUR01,C6,VOL40,DUR01,F6,VOL05,DUR01,G5,VOL40,DUR01,E6,VOL05,DUR01
+            fcb     0,0,0
+Track1      fcb     D5,VOL40,DUR01,0,0,DUR03,C5,VOL20,DUR01,0,0,DUR01,D5,VOL40,DUR01,0,0,DUR01,D5,VOL20,DUR01,0,0,DUR01,C5,VOL40,DUR01,0,0,DUR01,C5,VOL40,DUR01,0,0,DUR01,D5,VOL40,DUR01,0,0,DUR01
+            fcb     C5,VOL40,DUR01,0,0,DUR01,C5,VOL20,DUR01,0,0,DUR01,D5,VOL10,DUR01,0,0,DUR11
+            fcb     C5,VOL40,DUR01,0,0,DUR03,D5,VOL20,DUR01,0,0,DUR01,C5,VOL40,DUR01,0,0,DUR01,C5,VOL20,DUR01,0,0,DUR01,C5,VOL40,DUR01,0,0,DUR01,C5,VOL10,DUR01,0,0,DUR01,C5,VOL40,DUR01,0,0,DUR01
+            fcb     C5,VOL40,DUR01,0,0,DUR03,C5,VOL20,DUR01,0,0,DUR03,C5,VOL40,DUR01,0,0,DUR07
+            fcb     0,0,0
--- a/level1/atari/cmds/makefile	Mon Apr 02 20:27:29 2012 -0500
+++ b/level1/atari/cmds/makefile	Mon Apr 02 20:51:09 2012 -0500
@@ -21,8 +21,10 @@
 
 CMDS_DW		= inetd telnet dw
 
+CMDS_DEMO      = fuji
+
 SUBS		= gfx inkey syscall
-ALLOBJS		= $(CMDS) $(CMDS_D2) $(CMDS_DW) $(SUBS)
+ALLOBJS		= $(CMDS) $(CMDS_D2) $(CMDS_DW) $(CMDS_DEMO) $(SUBS)
 
 all:	$(ALLOBJS)
 
@@ -50,5 +52,8 @@
 showobjs_dw:
 	@$(ECHO) $(CMDS) $(CMDS_DW)
 
+showobjs_demo:
+	@$(ECHO) $(CMDS_DEMO)
+
 showallobjs:
 	@$(ECHO) $(ALLOBJS)
--- a/level1/atari/makefile	Mon Apr 02 20:27:29 2012 -0500
+++ b/level1/atari/makefile	Mon Apr 02 20:51:09 2012 -0500
@@ -16,15 +16,16 @@
 
 
 CMDS		= $(shell $(CD) cmds; make --no-print-directory showobjs_dw)
+CMDS_DEMO = $(shell $(CD) cmds; make --no-print-directory showobjs_demo)
 SYS		= $(shell $(CD) sys; make --no-print-directory showobjs)
 DEFS		= $(shell $(CD) defs; make --no-print-directory showobjs)
 STARTUP		= startup
 
 PACKAGENAME	= $(DISTROVER).zip
 DSK		     = $(DISTROVER).dsk
-
+DSK_DEMO       = ataridemo.dsk
 
-DSKS		= $(DSK)
+DSKS		= $(DSK) $(DSK_DEMO)
 
 # Make all components
 all:
@@ -70,6 +71,13 @@
 	$(CPL) $(STARTUP_DW) $@,startup
 	$(OS9ATTR_TEXT) $@,startup
 
+$(DSK_DEMO):
+	$(RM) $@
+	$(OS9FORMAT_DW3) -q $@ -n"NitrOS-9 Atari Demo Disk"
+	$(MAKDIR) $@,CMDS
+	$(CD) cmds; $(CP) $(CMDS_DEMO) ../$@,CMDS
+	$(foreach file, $(CMDS_DEMO), $(OS9ATTR_EXEC) $@,CMDS/$(file);)
+
 info:
 	@echo "*** NitrOS-9/6809 Level 1 for the Atari XL/XE ***" 
 	@$(foreach dsk, $(DSKS), $(ECHO) $(dsk);)