Action! Workshop 1 organized by ABBUC#

24th October 2010 "Unperfekthaus" Essen

The MENUE Program#

BYTE NUMPLAYER, LEVEL
BYTE CONSOL=53279
BYTE CRSINH=752

PROC PRINTPOS(CARD X, BYTE Y, BYTE ARRAY STR)
          
  BYTE ROWCRS=$54   
  CARD COLCRS=$55
  
  ROWCRS=Y
  COLCRS=X
  PRINT(STR)
RETURN

PROC PRINTBPOS(CARD X, BYTE Y, BYTE VALUE)
         
  BYTE ROWCRS=$54   
  CARD COLCRS=$55
  
  ROWCRS=Y
  COLCRS=X
  PRINTB(VALUE)
RETURN
    
     
PROC CLS()
  PUT(125)
RETURN  
       
PROC RAINBOW()
BYTE VCOUNT=$D40B,
     WSYNC=$D40A,
     COLPF2=$D018,
     RTCLK=20,
     I,J
  FOR J=1 TO 192
DO
  FOR I=1 TO 192
  DO
    WSYNC=0
    COLPF2 = VCOUNT+RTCLK
  OD
OD
RETURN

              
PROC HIGHLIGHT(BYTE LINE)
  BYTE VCOUNT=$D40B
  BYTE WSYNC =$D40A
  BYTE COLPF2=$D018   ;HINTERGRUND
  BYTE COLOR2=710
  BYTE I
  LINE==LSH 2
  LINE==+15        

  DO
  UNTIL VCOUNT=LINE
  OD
  WSYNC=0  
  WSYNC=0
  COLPF2=$CC
  
  FOR I=0 TO 7
  DO
    WSYNC=0
  OD             
  COLPF2=COLOR2
RETURN

PROC MAIN()
  BYTE SCONSOL, LINE
  BYTE ARRAY BALKEN=[$C0
                     $C2
                     $C6
                     $C8
                     $C8
                     $C6
                     $C2
                     $C0] 
  CRSINH=1
  CLS()
  NUMPLAYER=1
  LEVEL=1
  PRINTPOS(5,10,"ANZAHL SPIELER:")
  PRINTPOS(5,12,"LEVEL:")       
  PRINTPOS(5,16,"SPIEL STARTEN!")
  DO
      PRINTBPOS(20,10,NUMPLAYER)
      PRINTBPOS(20,12,LEVEL)  

      DO
        SCONSOL=CONSOL
        UNTIL SCONSOL#7
      OD

      IF SCONSOL=5 THEN
        LEVEL==&7
        LEVEL==+1   
        LINE= 12
    
      ELSEIF SCONSOL=3 THEN
        NUMPLAYER==&1
        NUMPLAYER==+1
        LINE=10
      FI            
      DO            
        HIGHLIGHT(LINE)
        UNTIL CONSOL=7
      OD

  UNTIL SCONSOL=6
  OD
  RAINBOW()     
  CRSINH=0

RETURN      

The DLI#

; DLI

CARD SDLSTL=$230
CARD VSDLST=$200
BYTE NMIEN =$D40E
CARD DLI2V
       
DEFINE PLA="$68"
DEFINE PHA="$48"
DEFINE TXA="$8A"
DEFINE TYA="$98"
DEFINE TAX="$AA"
DEFINE TAY="$A8"
DEFINE RTI="$40"

PROC SETDLI(BYTE LINE)
  BYTE POINTER P
  P = SDLSTL+LINE+5
  P^==%$80         
RETURN
  
PROC DLI()
  BYTE WSYNC=$D40A
  BYTE COLPF2=$D018

  [PHA TXA PHA TYA PHA]    

  WSYNC=0
  COLPF2=$CC
  VSDLST=DLI2V

  [PLA TAY PLA TAX PLA RTI]  

RETURN

PROC DLI2()
  BYTE WSYNC=$D40A
  BYTE COLPF2=$D018

  [PHA TXA PHA TYA PHA]    

  WSYNC=0
  COLPF2=$50 
  VSDLST=DLI

  [PLA TAY PLA TAX PLA RTI]  

RETURN

PROC MAIN()
  SETDLI(8)
  DLI2V=DLI2
  VSDLST=DLI  
  SETDLI(12)
  NMIEN==%$80
RETURN