              REL
              DSK      MAINSEG

              use      EDS.GSOS.MACS.s
              use      Tool222.Macs.s
              use      ../../src/GTE.s
              use      ../../src/Defs.s


              mx       %00

; Space for player position variables
PlayerX       equ      AppSpace
PlayerY       equ      AppSpace+2

; Timer handle
TimerHndl     dw       $FFFF
IntroCounter  ds       2

              phk
              plb

              jsl      EngineStartUp

              stz      PlayerX
              stz      PlayerY

              ldx      #0              ; Use full-screen mode
              jsl      SetScreenMode
              bcs      *+5
              sta      TimerHndl


              stz      IntroCounter
              ldx      #^IntroTask
              lda      #IntroTask
              ldy      #10             ; Play at 6 fps
              jsl      AddTimer
              bcs      *+5
              sta      TimerHndl

:loop
              jsl      DoTimers
              jsl      ReadControl
              and      #$007F          ; Ignore the buttons for now

              cmp      #'q'
              beq      :exit

; Just keep drawing the player.  The timer task will animate the position

              jsr      DrawPlayer
              bra      :loop

:moveup
              lda      PlayerY
              dec
              bpl      *+5
              lda      #0
              sta      PlayerY
              jmp      DrawPlayer

:movedown
              lda      PlayerY
              inc
              cmp      #160
              bcc      *+5
              lda      #160
              sta      PlayerY
              jmp      DrawPlayer

:moveleft
              lda      PlayerX
              dec
              bpl      *+5
              lda      #0
              sta      PlayerX
              jmp      DrawPlayer

:moveright
              lda      PlayerX
              inc
              cmp      #140
              bcc      *+5
              lda      #140
              sta      PlayerX
              jmp      DrawPlayer

; Clean up and do a GS/OS Quit
:exit
              jsl      EngineShutDown

:quit
              _QuitGS  qtRec
              bcs      :fatal
:fatal        brk      $00

qtRec         adrl     $0000
              da       $00

; Play a scripted animation
IntroTask
              phb
              phk
              plb

              lda      IntroCounter
              and      #$0007
              asl
              asl
              tax

              lda      IntroPath,x     ; X coordinate
              sta      PlayerX
              lda      IntroPath+2,x   ; Y coordinate
              sta      PlayerY

              inc      IntroCounter
              plb
              rtl

IntroPath     dw       0,0,10,0,20,0,20,5,20,7,35,15,50,17,80,20

DrawPlayer
              rts
;              lda      PlayerY
;              asl
;              tax
;              ldal     ScreenAddr,x
;              clc
;              adc      PlayerX
;              tay
;              jsl      Spr_001
;              rts

; Storage for tiles (not used in this demo)
tiledata      ENT

; Storage for sprites
;StackAddress  ds       2
;              PUT      sprites/Ships.s


















