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

⟦5e0ba5caf⟧ TextFile

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

Derivation

└─⟦ec8c1e0b0⟧ Bits:30007442 8" floppy ( MIKPROG vol. 1-3, MIKREL vol. 1-3, PCSE 4.7.80 vol 1-3, GL.SYS )
    └─⟦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 = 96 ; (*ON SPC/1 TERMINAL PORT; USE 96, 98, 100, 102
                          FOR MULTI-USER SYSTEM TERMINAL 1, 2, 3, 4 *)
       
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…485 Line {l1=0x46, l2=»       IOCHANNEL = 96 ; (*ON SPC/1 TERMINAL PORT; USE 96, 98, 100, 102«, l3=0x46}
0x485…4cd Line {l1=0x46, l2=»                          FOR MULTI-USER SYSTEM TERMINAL 1, 2, 3, 4 *)«, l3=0x46}
0x4cd…4d6 Line {l1=0x07, l2=»       «, l3=0x07}
0x4d6…511 Line {l1=0x39, l2=»VAR    FREESQUARE: ARRAY(1..MAXCOL,1..MAXROW) OF BOOLEAN;«, l3=0x39}
0x511…556 Line {l1=0x43, l2=»       X1, Y1, X2, Y2, X1DELTA, Y1DELTA, X2DELTA, Y2DELTA: INTEGER;«, l3=0x43}
0x556…577 Line {l1=0x1f, l2=»       ASCORE, BSCORE: INTEGER;«, l3=0x1f}
0x577…593 Line {l1=0x1a, l2=»       DELAYTIME: INTEGER;«, l3=0x1a}
0x593…5ae Line {l1=0x19, l2=»       GAMEOVER: BOOLEAN;«, l3=0x19}
0x5ae…5b1 Line {l1=0x01, l2=» «, l3=0x01}
          […0x1…]
0x5b4…5cb Line {l1=0x15, l2=»PROCEDURE INITIALIZE;«, l3=0x15}
0x5cb…5e0 Line {l1=0x13, l2=»  VAR X,Y: INTEGER;«, l3=0x13}
0x5e0…5e7 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x5e7…601 Line {l1=0x18, l2=»  FOR X:= 1 TO MAXCOL DO«, l3=0x18}
0x601…61d Line {l1=0x1a, l2=»    FOR Y:= 1 TO MAXROW DO«, l3=0x1a}
0x61d…657 Line {l1=0x38, l2=»      IF (X IN (.1,MAXCOL.)) OR (Y IN (.1,MAXROW.)) THEN«, l3=0x38}
0x657…666 Line {l1=0x0d, l2=»        BEGIN«, l3=0x0d}
0x666…689 Line {l1=0x21, l2=»        FREESQUARE(X,Y) := FALSE;«, l3=0x21}
0x689…69f Line {l1=0x14, l2=»        GOTOXY(X,Y);«, l3=0x14}
0x69f…6b3 Line {l1=0x12, l2=»        WRITE('*')«, l3=0x12}
0x6b3…6c0 Line {l1=0x0b, l2=»        END«, l3=0x0b}
0x6c0…6e5 Line {l1=0x23, l2=»      ELSE FREESQUARE(X,Y) := TRUE;«, l3=0x23}
0x6e5…719 Line {l1=0x32, l2=»  X1 :=  4; Y1 := 12; X1DELTA :=  1; Y1DELTA := 0;«, l3=0x32}
0x719…753 Line {l1=0x38, l2=»  X2 := MAXCOL-3; Y2 := 13; X2DELTA := -1; Y2DELTA := 0;«, l3=0x38}
0x753…767 Line {l1=0x12, l2=»  DELAYTIME := 20;«, l3=0x12}
0x767…77d Line {l1=0x14, l2=»END  (*INITIALIZE*);«, l3=0x14}
0x77d…780 Line {l1=0x01, l2=» «, l3=0x01}
          […0x1…]
0x783…78a Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x78a…7a7 Line {l1=0x1b, l2=»  ASCORE := 0; BSCORE := 0;«, l3=0x1b}
0x7a7…7b1 Line {l1=0x08, l2=»  REPEAT«, l3=0x08}
0x7b1…7bc Line {l1=0x09, l2=»    BEGIN«, l3=0x09}
0x7bc…7ce Line {l1=0x10, l2=»    CLEARSCREEN;«, l3=0x10}
0x7ce…7e4 Line {l1=0x14, l2=»    GOTOXY( 10, 4 );«, l3=0x14}
0x7e4…82a Line {l1=0x44, l2=»    WRITE('CURRENT SCORE: PLAYER 1: ',ASCORE,'; PLAYER 2: ',BSCORE);«, l3=0x44}
0x82a…841 Line {l1=0x15, l2=»    GOTOXY( 10, 10 );«, l3=0x15}
0x841…887 Line {l1=0x44, l2=»    WRITE('PRESS "RETURN" TO START A NEW GAME, "ESC" TO TERMINATE');«, l3=0x44}
0x887…894 Line {l1=0x0b, l2=»    READLN;«, l3=0x0b}
0x894…8a9 Line {l1=0x13, l2=»    IF NOT EOF THEN«, l3=0x13}
0x8a9…8b6 Line {l1=0x0b, l2=»      BEGIN«, l3=0x0b}
0x8b6…8ca Line {l1=0x12, l2=»      CLEARSCREEN;«, l3=0x12}
0x8ca…8dd Line {l1=0x11, l2=»      INITIALIZE;«, l3=0x11}
0x8dd…8f7 Line {l1=0x18, l2=»      GAMEOVER := FALSE;«, l3=0x18}
0x8f7…905 Line {l1=0x0c, l2=»      REPEAT«, l3=0x0c}
0x905…914 Line {l1=0x0d, l2=»        BEGIN«, l3=0x0d}
0x914…931 Line {l1=0x1b, l2=»        DELAY( DELAYTIME );«, l3=0x1b}
0x931…95d Line {l1=0x2a, l2=»        CASE CHR( IN80(IOCHANNEL,127) ) OF«, l3=0x2a}
0x95d…990 Line {l1=0x31, l2=»          'A': BEGIN X1DELTA:=-1; Y1DELTA:=0 END;«, l3=0x31}
0x990…9c2 Line {l1=0x30, l2=»          'Z': BEGIN X1DELTA:=0; Y1DELTA:=1 END;«, l3=0x30}
0x9c2…9f5 Line {l1=0x31, l2=»          'W': BEGIN X1DELTA:=0; Y1DELTA:=-1 END;«, l3=0x31}
0x9f5…a27 Line {l1=0x30, l2=»          'S': BEGIN X1DELTA:=1; Y1DELTA:=0 END;«, l3=0x30}
0xa27…a5a Line {l1=0x31, l2=»          'J': BEGIN X2DELTA:=-1; Y2DELTA:=0 END;«, l3=0x31}
0xa5a…a8c Line {l1=0x30, l2=»          'M': BEGIN X2DELTA:=0; Y2DELTA:=1 END;«, l3=0x30}
0xa8c…abf Line {l1=0x31, l2=»          'I': BEGIN X2DELTA:=0; Y2DELTA:=-1 END;«, l3=0x31}
0xabf…af1 Line {l1=0x30, l2=»          'K': BEGIN X2DELTA:=1; Y2DELTA:=0 END;«, l3=0x30}
0xaf1…b0e Line {l1=0x1b, l2=»        END  (*CASE IN80*);«, l3=0x1b}
0xb0e…b3f Line {l1=0x2f, l2=»        X1 := X1 + X1DELTA; Y1 := Y1 + Y1DELTA;«, l3=0x2f}
0xb3f…b70 Line {l1=0x2f, l2=»        X2 := X2 + X2DELTA; Y2 := Y2 + Y2DELTA;«, l3=0x2f}
0xb70…b97 Line {l1=0x25, l2=»        IF NOT FREESQUARE(X1,Y1) THEN«, l3=0x25}
0xb97…ba8 Line {l1=0x0f, l2=»          BEGIN«, l3=0x0f}
0xba8…bc5 Line {l1=0x1b, l2=»          GAMEOVER := TRUE;«, l3=0x1b}
0xbc5…be5 Line {l1=0x1e, l2=»          BSCORE := BSCORE + 1«, l3=0x1e}
0xbe5…bf4 Line {l1=0x0d, l2=»          END«, l3=0x0d}
0xbf4…c02 Line {l1=0x0c, l2=»        ELSE«, l3=0x0c}
0xc02…c13 Line {l1=0x0f, l2=»          BEGIN«, l3=0x0f}
0xc13…c30 Line {l1=0x1b, l2=»          GOTOXY( X1, Y1 );«, l3=0x1b}
0xc30…c49 Line {l1=0x17, l2=»          WRITE( '1' );«, l3=0x17}
0xc49…c70 Line {l1=0x25, l2=»          FREESQUARE(X1,Y1) := FALSE;«, l3=0x25}
0xc70…c99 Line {l1=0x27, l2=»          IF NOT FREESQUARE(X2,Y2) THEN«, l3=0x27}
0xc99…cac Line {l1=0x11, l2=»            BEGIN«, l3=0x11}
0xcac…ccb Line {l1=0x1d, l2=»            GAMEOVER := TRUE;«, l3=0x1d}
0xccb…cee Line {l1=0x21, l2=»            ASCORE := ASCORE + 1;«, l3=0x21}
0xcee…cff Line {l1=0x0f, l2=»            END«, l3=0x0f}
0xcff…d0f Line {l1=0x0e, l2=»          ELSE«, l3=0x0e}
0xd0f…d22 Line {l1=0x11, l2=»            BEGIN«, l3=0x11}
0xd22…d41 Line {l1=0x1d, l2=»            GOTOXY( X2, Y2 );«, l3=0x1d}
0xd41…d5c Line {l1=0x19, l2=»            WRITE( '2' );«, l3=0x19}
0xd5c…d85 Line {l1=0x27, l2=»            FREESQUARE(X2,Y2) := FALSE;«, l3=0x27}
0xd85…d97 Line {l1=0x10, l2=»            END;«, l3=0x10}
0xd97…da7 Line {l1=0x0e, l2=»          END;«, l3=0x0e}
0xda7…dca Line {l1=0x21, l2=»        END  (*REPEATSTATEMENT*);«, l3=0x21}
0xdca…de1 Line {l1=0x15, l2=»      UNTIL GAMEOVER;«, l3=0x15}
0xde1…dfd Line {l1=0x1a, l2=»      END  (*IF NOT EOF*);«, l3=0x1a}
0xdfd…e07 Line {l1=0x08, l2=»    END;«, l3=0x08}
0xe07…e15 Line {l1=0x0c, l2=»  UNTIL EOF;«, l3=0x0c}
0xe15…e29 Line {l1=0x12, l2=»  GOTOXY( 1, 23 );«, l3=0x12}
0xe29…e43 Line {l1=0x18, l2=»  WRITELN( 'GAME OVER' )«, l3=0x18}
0xe43…e49 Line {l1=0x04, l2=»END.«, l3=0x04}
0xe49…e60 00 00 20 20 55 4e 54 49 4c 20 45 4f 46 3b 0c 12 20 20 47 4f 54 4f 58                              ┆    UNTIL EOF;    GOTOX┆
0xe60…e80 59 28 20 31 2c 20 32 33 20 29 3b 12 18 20 20 57 52 49 54 45 4c 4e 28 20 27 47 41 4d 45 20 4f 56   ┆Y( 1, 23 );    WRITELN( '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