;MAZE
;------------------------------------

DEFINE
  ESC="28",
  AVATAR="32",
  LEFT="PLAYERPOS^=0 PLAYERPOS==-1 PLAYERPOS^=AVATAR",
  RIGHT="PLAYERPOS^=0 PLAYERPOS==+1 PLAYERPOS^=AVATAR",
  UP="PLAYERPOS^=0 PLAYERPOS==-40 PLAYERPOS^=AVATAR",
  DOWN="PLAYERPOS^=0 PLAYERPOS==+40 PLAYERPOS^=AVATAR"

;------------------------------------

CARD
  SAVMSC=$58

BYTE
  RTCLOCK=$14,KBCODE=$D209,
  SKSTAT=$D20F,STICK0=$0278,
  RND=$D20A

BYTE POINTER PLAYERPOS
BYTE ARRAY SCREEN
BYTE ARRAY CHRSET

;------------------------------------

PROC BOX()
  BYTE X,Y
  SCREEN=SAVMSC
  FOR Y=0 TO 23
   DO
    FOR X=0 TO 23 DO SCREEN(X)=128 OD
    SCREEN==+40
   OD
RETURN

;------------------------------------

PROC WAIT(BYTE FRAMES)
  FRAMES==+RTCLOCK
  WHILE FRAMES<>RTCLOCK DO OD
RETURN

;------------------------------------

PROC MOVE()
  IF KBCODE=134 THEN LEFT RETURN FI
  IF KBCODE=135 THEN RIGHT RETURN FI
  IF KBCODE=142 THEN UP RETURN FI
  IF KBCODE=143 THEN DOWN RETURN FI
RETURN

;------------------------------------

PROC MAIN()
  GRAPHICS(0)

  BOX()
  PLAYERPOS=SAVMSC+41
  PLAYERPOS^=AVATAR

  DO
   IF (SKSTAT & 4)=0 THEN
    IF KBCODE=ESC THEN EXIT FI
    MOVE() WAIT(8)
   FI
  OD

RETURN
