DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦e851d5014⟧ TextFile

    Length: 3808 (0xee0)
    Types: TextFile
    Notes: Mikados_K
    Names: »ASG.K«

Derivation

└─⟦89d8689a3⟧ Bits:30003591 MIKADOS Pascal compiler (01.02.1982 E)
    └─⟦this⟧ »ASG.K« 

Mikados K File

PROGRAM ASG;
 
       (*************************************************)
       (*                                               *)
       (*      A  S  G    =    ANOTHER STUPID GAME      *)
       (*                                               *)
       (* TWO PLAYERS COMPETE ON A CRT TERMINAL.        *)
       (* BY USING TWO SETS OF CRT CONTROL KEYS THEY    *)
       (* CONTROL ONE CONSTANTLY MOVING CURSOR EACH.    *)
       (* THE FIRST PLAYER WHOSE CURSOR ENTERS A        *)
       (* FIELD THAT HAS PREVIOUSLY BEEN ACCESSED,      *)
       (* LOOSES                                        *)
       (* THE CURSOR CONTROLS ARE:                      *)
       (* FUNCTION   PLAYER 1       PLAYER2             *)
       (*    UP         W              I                *)
       (*   LEFT        A              J                *)
       (*   RIGHT       S              K                *)
       (*   DOWN        Z              M                *)
       (*************************************RM-790725***)
 
 
CONST  MAXROW = 24;
       MAXCOL = 79;
       IOCHANNEL = 226; (* SPC/1 TERMINAL PORT. MODIFY AS REQUIRED *)
       
VAR    FREESQUARE: ARRAY(1..MAXCOL,1..MAXROW) OF BOOLEAN;
       X1, Y1, X2, Y2, X1DELTA, Y1DELTA, X2DELTA, Y2DELTA: INTEGER;
       ASCORE, BSCORE: INTEGER;
       DELAYTIME: INTEGER;
       GAMEOVER: BOOLEAN;
 
 
PROCEDURE INITIALIZE;
  VAR X,Y: INTEGER;
BEGIN
  FOR X:= 1 TO MAXCOL DO
    FOR Y:= 1 TO MAXROW DO
      IF (X IN (.1,MAXCOL.)) OR (Y IN (.1,MAXROW.)) THEN
        BEGIN
        FREESQUARE(X,Y) := FALSE;
        GOTOXY(X,Y);
        WRITE('*')
        END
      ELSE FREESQUARE(X,Y) := TRUE;
  X1 :=  4; Y1 := 12; X1DELTA :=  1; Y1DELTA := 0;
  X2 := MAXCOL-3; Y2 := 13; X2DELTA := -1; Y2DELTA := 0;
  DELAYTIME := 20;
END  (*INITIALIZE*);
 
 
BEGIN
  ASCORE := 0; BSCORE := 0;
  REPEAT
    BEGIN
    CLEARSCREEN;
    GOTOXY( 10, 4 );
    WRITE('CURRENT SCORE: PLAYER 1: ',ASCORE,'; PLAYER 2: ',BSCORE);
    GOTOXY( 10, 10 );
    WRITE('PRESS "RETURN" TO START A NEW GAME, "ESC" TO TERMINATE');
    READLN;
    IF NOT EOF THEN
      BEGIN
      CLEARSCREEN;
      INITIALIZE;
      GAMEOVER := FALSE;
      REPEAT
        BEGIN
        DELAY( DELAYTIME );
        CASE CHR( IN80(IOCHANNEL,127) ) OF
          'A': BEGIN X1DELTA:=-1; Y1DELTA:=0 END;
          'Z': BEGIN X1DELTA:=0; Y1DELTA:=1 END;
          'W': BEGIN X1DELTA:=0; Y1DELTA:=-1 END;
          'S': BEGIN X1DELTA:=1; Y1DELTA:=0 END;
          'J': BEGIN X2DELTA:=-1; Y2DELTA:=0 END;
          'M': BEGIN X2DELTA:=0; Y2DELTA:=1 END;
          'I': BEGIN X2DELTA:=0; Y2DELTA:=-1 END;
          'K': BEGIN X2DELTA:=1; Y2DELTA:=0 END;
        END  (*CASE IN80*);
        X1 := X1 + X1DELTA; Y1 := Y1 + Y1DELTA;
        X2 := X2 + X2DELTA; Y2 := Y2 + Y2DELTA;
        IF NOT FREESQUARE(X1,Y1) THEN
          BEGIN
          GAMEOVER := TRUE;
          BSCORE := BSCORE + 1
          END
        ELSE
          BEGIN
          GOTOXY( X1, Y1 );
          WRITE( '1' );
          FREESQUARE(X1,Y1) := FALSE;
          IF NOT FREESQUARE(X2,Y2) THEN
            BEGIN
            GAMEOVER := TRUE;
            ASCORE := ASCORE + 1;
            END
          ELSE
            BEGIN
            GOTOXY( X2, Y2 );
            WRITE( '2' );
            FREESQUARE(X2,Y2) := FALSE;
            END;
          END;
        END  (*REPEATSTATEMENT*);
      UNTIL GAMEOVER;
      END  (*IF NOT EOF*);
    END;
  UNTIL EOF;
  GOTOXY( 1, 23 );
  WRITELN( 'GAME OVER' )
END.

Mikados K File

0x000…00e Line {l1=0x0c, l2=»PROGRAM ASG;«, l3=0x0c}
0x00e…011 Line {l1=0x01, l2=» «, l3=0x01}
0x011…04d Line {l1=0x3a, l2=»       (*************************************************)«, l3=0x3a}
0x04d…089 Line {l1=0x3a, l2=»       (*                                               *)«, l3=0x3a}
0x089…0c5 Line {l1=0x3a, l2=»       (*      A  S  G    =    ANOTHER STUPID GAME      *)«, l3=0x3a}
0x0c5…101 Line {l1=0x3a, l2=»       (*                                               *)«, l3=0x3a}
0x101…13d Line {l1=0x3a, l2=»       (* TWO PLAYERS COMPETE ON A CRT TERMINAL.        *)«, l3=0x3a}
0x13d…179 Line {l1=0x3a, l2=»       (* BY USING TWO SETS OF CRT CONTROL KEYS THEY    *)«, l3=0x3a}
0x179…1b5 Line {l1=0x3a, l2=»       (* CONTROL ONE CONSTANTLY MOVING CURSOR EACH.    *)«, l3=0x3a}
0x1b5…1f1 Line {l1=0x3a, l2=»       (* THE FIRST PLAYER WHOSE CURSOR ENTERS A        *)«, l3=0x3a}
0x1f1…22d Line {l1=0x3a, l2=»       (* FIELD THAT HAS PREVIOUSLY BEEN ACCESSED,      *)«, l3=0x3a}
0x22d…269 Line {l1=0x3a, l2=»       (* LOOSES                                        *)«, l3=0x3a}
0x269…2a5 Line {l1=0x3a, l2=»       (* THE CURSOR CONTROLS ARE:                      *)«, l3=0x3a}
0x2a5…2e1 Line {l1=0x3a, l2=»       (* FUNCTION   PLAYER 1       PLAYER2             *)«, l3=0x3a}
0x2e1…31d Line {l1=0x3a, l2=»       (*    UP         W              I                *)«, l3=0x3a}
0x31d…359 Line {l1=0x3a, l2=»       (*   LEFT        A              J                *)«, l3=0x3a}
0x359…395 Line {l1=0x3a, l2=»       (*   RIGHT       S              K                *)«, l3=0x3a}
0x395…3d1 Line {l1=0x3a, l2=»       (*   DOWN        Z              M                *)«, l3=0x3a}
0x3d1…40d Line {l1=0x3a, l2=»       (*************************************RM-790725***)«, l3=0x3a}
0x40d…410 Line {l1=0x01, l2=» «, l3=0x01}
          […0x1…]
0x413…428 Line {l1=0x13, l2=»CONST  MAXROW = 24;«, l3=0x13}
0x428…43d Line {l1=0x13, l2=»       MAXCOL = 79;«, l3=0x13}
0x43d…484 Line {l1=0x45, l2=»       IOCHANNEL = 226; (* SPC/1 TERMINAL PORT. MODIFY AS REQUIRED *)«, l3=0x45}
0x484…48d Line {l1=0x07, l2=»       «, l3=0x07}
0x48d…4c8 Line {l1=0x39, l2=»VAR    FREESQUARE: ARRAY(1..MAXCOL,1..MAXROW) OF BOOLEAN;«, l3=0x39}
0x4c8…50d Line {l1=0x43, l2=»       X1, Y1, X2, Y2, X1DELTA, Y1DELTA, X2DELTA, Y2DELTA: INTEGER;«, l3=0x43}
0x50d…52e Line {l1=0x1f, l2=»       ASCORE, BSCORE: INTEGER;«, l3=0x1f}
0x52e…54a Line {l1=0x1a, l2=»       DELAYTIME: INTEGER;«, l3=0x1a}
0x54a…565 Line {l1=0x19, l2=»       GAMEOVER: BOOLEAN;«, l3=0x19}
0x565…568 Line {l1=0x01, l2=» «, l3=0x01}
          […0x1…]
0x56b…582 Line {l1=0x15, l2=»PROCEDURE INITIALIZE;«, l3=0x15}
0x582…597 Line {l1=0x13, l2=»  VAR X,Y: INTEGER;«, l3=0x13}
0x597…59e Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x59e…5b8 Line {l1=0x18, l2=»  FOR X:= 1 TO MAXCOL DO«, l3=0x18}
0x5b8…5d4 Line {l1=0x1a, l2=»    FOR Y:= 1 TO MAXROW DO«, l3=0x1a}
0x5d4…60e Line {l1=0x38, l2=»      IF (X IN (.1,MAXCOL.)) OR (Y IN (.1,MAXROW.)) THEN«, l3=0x38}
0x60e…61d Line {l1=0x0d, l2=»        BEGIN«, l3=0x0d}
0x61d…640 Line {l1=0x21, l2=»        FREESQUARE(X,Y) := FALSE;«, l3=0x21}
0x640…656 Line {l1=0x14, l2=»        GOTOXY(X,Y);«, l3=0x14}
0x656…66a Line {l1=0x12, l2=»        WRITE('*')«, l3=0x12}
0x66a…677 Line {l1=0x0b, l2=»        END«, l3=0x0b}
0x677…69c Line {l1=0x23, l2=»      ELSE FREESQUARE(X,Y) := TRUE;«, l3=0x23}
0x69c…6d0 Line {l1=0x32, l2=»  X1 :=  4; Y1 := 12; X1DELTA :=  1; Y1DELTA := 0;«, l3=0x32}
0x6d0…70a Line {l1=0x38, l2=»  X2 := MAXCOL-3; Y2 := 13; X2DELTA := -1; Y2DELTA := 0;«, l3=0x38}
0x70a…71e Line {l1=0x12, l2=»  DELAYTIME := 20;«, l3=0x12}
0x71e…734 Line {l1=0x14, l2=»END  (*INITIALIZE*);«, l3=0x14}
0x734…737 Line {l1=0x01, l2=» «, l3=0x01}
          […0x1…]
0x73a…741 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x741…75e Line {l1=0x1b, l2=»  ASCORE := 0; BSCORE := 0;«, l3=0x1b}
0x75e…768 Line {l1=0x08, l2=»  REPEAT«, l3=0x08}
0x768…773 Line {l1=0x09, l2=»    BEGIN«, l3=0x09}
0x773…785 Line {l1=0x10, l2=»    CLEARSCREEN;«, l3=0x10}
0x785…79b Line {l1=0x14, l2=»    GOTOXY( 10, 4 );«, l3=0x14}
0x79b…7e1 Line {l1=0x44, l2=»    WRITE('CURRENT SCORE: PLAYER 1: ',ASCORE,'; PLAYER 2: ',BSCORE);«, l3=0x44}
0x7e1…7f8 Line {l1=0x15, l2=»    GOTOXY( 10, 10 );«, l3=0x15}
0x7f8…83e Line {l1=0x44, l2=»    WRITE('PRESS "RETURN" TO START A NEW GAME, "ESC" TO TERMINATE');«, l3=0x44}
0x83e…84b Line {l1=0x0b, l2=»    READLN;«, l3=0x0b}
0x84b…860 Line {l1=0x13, l2=»    IF NOT EOF THEN«, l3=0x13}
0x860…86d Line {l1=0x0b, l2=»      BEGIN«, l3=0x0b}
0x86d…881 Line {l1=0x12, l2=»      CLEARSCREEN;«, l3=0x12}
0x881…894 Line {l1=0x11, l2=»      INITIALIZE;«, l3=0x11}
0x894…8ae Line {l1=0x18, l2=»      GAMEOVER := FALSE;«, l3=0x18}
0x8ae…8bc Line {l1=0x0c, l2=»      REPEAT«, l3=0x0c}
0x8bc…8cb Line {l1=0x0d, l2=»        BEGIN«, l3=0x0d}
0x8cb…8e8 Line {l1=0x1b, l2=»        DELAY( DELAYTIME );«, l3=0x1b}
0x8e8…914 Line {l1=0x2a, l2=»        CASE CHR( IN80(IOCHANNEL,127) ) OF«, l3=0x2a}
0x914…947 Line {l1=0x31, l2=»          'A': BEGIN X1DELTA:=-1; Y1DELTA:=0 END;«, l3=0x31}
0x947…979 Line {l1=0x30, l2=»          'Z': BEGIN X1DELTA:=0; Y1DELTA:=1 END;«, l3=0x30}
0x979…9ac Line {l1=0x31, l2=»          'W': BEGIN X1DELTA:=0; Y1DELTA:=-1 END;«, l3=0x31}
0x9ac…9de Line {l1=0x30, l2=»          'S': BEGIN X1DELTA:=1; Y1DELTA:=0 END;«, l3=0x30}
0x9de…a11 Line {l1=0x31, l2=»          'J': BEGIN X2DELTA:=-1; Y2DELTA:=0 END;«, l3=0x31}
0xa11…a43 Line {l1=0x30, l2=»          'M': BEGIN X2DELTA:=0; Y2DELTA:=1 END;«, l3=0x30}
0xa43…a76 Line {l1=0x31, l2=»          'I': BEGIN X2DELTA:=0; Y2DELTA:=-1 END;«, l3=0x31}
0xa76…aa8 Line {l1=0x30, l2=»          'K': BEGIN X2DELTA:=1; Y2DELTA:=0 END;«, l3=0x30}
0xaa8…ac5 Line {l1=0x1b, l2=»        END  (*CASE IN80*);«, l3=0x1b}
0xac5…af6 Line {l1=0x2f, l2=»        X1 := X1 + X1DELTA; Y1 := Y1 + Y1DELTA;«, l3=0x2f}
0xaf6…b27 Line {l1=0x2f, l2=»        X2 := X2 + X2DELTA; Y2 := Y2 + Y2DELTA;«, l3=0x2f}
0xb27…b4e Line {l1=0x25, l2=»        IF NOT FREESQUARE(X1,Y1) THEN«, l3=0x25}
0xb4e…b5f Line {l1=0x0f, l2=»          BEGIN«, l3=0x0f}
0xb5f…b7c Line {l1=0x1b, l2=»          GAMEOVER := TRUE;«, l3=0x1b}
0xb7c…b9c Line {l1=0x1e, l2=»          BSCORE := BSCORE + 1«, l3=0x1e}
0xb9c…bab Line {l1=0x0d, l2=»          END«, l3=0x0d}
0xbab…bb9 Line {l1=0x0c, l2=»        ELSE«, l3=0x0c}
0xbb9…bca Line {l1=0x0f, l2=»          BEGIN«, l3=0x0f}
0xbca…be7 Line {l1=0x1b, l2=»          GOTOXY( X1, Y1 );«, l3=0x1b}
0xbe7…c00 Line {l1=0x17, l2=»          WRITE( '1' );«, l3=0x17}
0xc00…c27 Line {l1=0x25, l2=»          FREESQUARE(X1,Y1) := FALSE;«, l3=0x25}
0xc27…c50 Line {l1=0x27, l2=»          IF NOT FREESQUARE(X2,Y2) THEN«, l3=0x27}
0xc50…c63 Line {l1=0x11, l2=»            BEGIN«, l3=0x11}
0xc63…c82 Line {l1=0x1d, l2=»            GAMEOVER := TRUE;«, l3=0x1d}
0xc82…ca5 Line {l1=0x21, l2=»            ASCORE := ASCORE + 1;«, l3=0x21}
0xca5…cb6 Line {l1=0x0f, l2=»            END«, l3=0x0f}
0xcb6…cc6 Line {l1=0x0e, l2=»          ELSE«, l3=0x0e}
0xcc6…cd9 Line {l1=0x11, l2=»            BEGIN«, l3=0x11}
0xcd9…cf8 Line {l1=0x1d, l2=»            GOTOXY( X2, Y2 );«, l3=0x1d}
0xcf8…d13 Line {l1=0x19, l2=»            WRITE( '2' );«, l3=0x19}
0xd13…d3c Line {l1=0x27, l2=»            FREESQUARE(X2,Y2) := FALSE;«, l3=0x27}
0xd3c…d4e Line {l1=0x10, l2=»            END;«, l3=0x10}
0xd4e…d5e Line {l1=0x0e, l2=»          END;«, l3=0x0e}
0xd5e…d81 Line {l1=0x21, l2=»        END  (*REPEATSTATEMENT*);«, l3=0x21}
0xd81…d98 Line {l1=0x15, l2=»      UNTIL GAMEOVER;«, l3=0x15}
0xd98…db4 Line {l1=0x1a, l2=»      END  (*IF NOT EOF*);«, l3=0x1a}
0xdb4…dbe Line {l1=0x08, l2=»    END;«, l3=0x08}
0xdbe…dcc Line {l1=0x0c, l2=»  UNTIL EOF;«, l3=0x0c}
0xdcc…de0 Line {l1=0x12, l2=»  GOTOXY( 1, 23 );«, l3=0x12}
0xde0…dfa Line {l1=0x18, l2=»  WRITELN( 'GAME OVER' )«, l3=0x18}
0xdfa…e00 Line {l1=0x04, l2=»END.«, l3=0x04}
0xe00…e20 00 00 49 4c 20 47 41 4d 45 4f 56 45 52 3b 15 1a 20 20 20 20 20 20 45 4e 44 20 20 28 2a 49 46 20   ┆  IL GAMEOVER;        END  (*IF ┆
0xe20…e40 4e 4f 54 20 45 4f 46 2a 29 3b 1a 08 20 20 20 20 45 4e 44 3b 08 0c 20 20 55 4e 54 49 4c 20 45 4f   ┆NOT EOF*);      END;    UNTIL EO┆
0xe40…e60 46 3b 0c 12 20 20 47 4f 54 4f 58 59 28 20 31 2c 20 32 33 20 29 3b 12 18 20 20 57 52 49 54 45 4c   ┆F;    GOTOXY( 1, 23 );    WRITEL┆
0xe60…e80 4e 28 20 27 47 41 4d 45 20 4f 56 45 52 27 20 29 18 04 45 4e 44 2e 04 00 00 47 41 4d 45 20 4f 56   ┆N( 'GAME OVER' )  END.   GAME OV┆
0xe80…ea0 45 52 27 20 29 18 04 45 4e 44 2e 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆ER' )  END.                     ┆
0xea0…ec0 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   ┆                                ┆
0xec0…ee0 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 63   ┆                               c┆

Reduced view