DataMuseum.dk

Presents historical artifacts from the history of:

Q1 computer

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

See our Wiki for more about Q1 computer

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦229f463b9⟧ Q1_Text, reclen=79

    Length: 10744 (0x29f8)
    Types: Q1_Text, reclen=79
    Notes: q1file
    Names: »CASINO1«

Derivation

└─⟦9e403ec87⟧ Bits:30008765 50001610
    └─⟦this⟧ »CASINO1« 

Text

DCL SEED FIXED(10), NUM FIXED(2), DECK(52) FIXED(2), DUMB CHAR(1);             
DCL AMTC CHAR(5), BETC CHAR(4);                                                
DCL CK BINARY, CARD BINARY,CARDV BINARY,PFLG BINARY,DFLG BINARY,PCNT BINARY,   
  BET BINARY, AMOUNT FIXED(11), LL BINARY, L BINARY, SUITV BINARY, DCNT BINARY;
DCL HLIN CHAR(47)INIT('DU HAR:                       JAG (Q1) HAR:    '),      
   LINE(9)CHAR(47),                                                            
   BLK CHAR(47)INIT('                                               '),        
   CLIN CHAR(27), BLIN CHAR(27), B3 CHAR(3)INIT('   '),  DLIN CHAR(47),        
    CD(52);                                                                    
/*  RANDOM NUMBER GENERATOR  */                                                
RNGEN: PROC(LOC3); DCL LOC1 FIXED(10), LOC2 FIXED(10), LOC3 FIXED(2);          
   IF SEED<0 THEN SEED=-SEED;                                                  
   LOC1=SEED*899; SEED=LOC1; LOC2=LOC1/52; LOC3=(LOC1-LOC2*52)+1;              
   IF LOC3<0 THEN LOC3=-LOC3; RETURN; END;                                     
/*  OUTPUTS A PAGE TO THE DISPLAY  */                                          
POUT: PROC; PUT FILE(DISPLAY)LIST(HLIN);                                       
   PMA=PL-1; IF PL<DL THEN PMA=DL-1;                                           
   DO II=1 TO PMA; PUT FILE(DISPLAY)LIST(LINE(II)); END; IF PMA=9 THEN GOTO P6;
   PMA=PMA+1;DO II=PMA TO 9; PUT FILE(DISPLAY)EDIT('   ')(A(47));END;          
P6: RETURN; END;                                                               
/*  SHUFFLING CARDS  */                                                        
SHUFF: PROC; PUT FILE(D)SKIP EDIT('JAG (Q1) MÅSTE BLANDA KORTEN......')(A(94)) 
('TRYCK RETURN NÄR DU TROR ATT DET ÄR            TILLRÄCKLIGT BLANDAT')(A(94));
  NUM=1;CALL KEYFUN(I);LOP:CALL KEYFUN(I);IF I THEN DO;GOTO GOTIT;END;         
NUM=NUM+1;                                                                     
   GOTO LOP;                                                                   
GOTIT:GET SKIP LIST(DUMB); SEED=123456789+L*2*NUM;                             
DO III=1 TO 52;DECK(III)=0;END;JJJ=1;                                          
   DO II=1 TO 70; END;                                                         
   RETURN; END;                                                                
XDEAL: PROC; IF DCNT<10 THEN GO TO XXD; CARD=21-DCNT;IJK=0; GO TO XXXD;        
XXD: CARD=11-DCNT; XXXD: L=L+1; RETURN; END;                                   
DEAL: PROC;AGN: CALL RNGEN(NUM); IF NUM=0 THEN GOTO AGN;                       
DO III=1 TO 52;IF DECK(III)=NUM THEN GO TO AGN;END;                            
DECK(JJJ)=NUM;JJJ=JJJ+1;CARD=NUM;                                              
    L=L+1; RETURN; END;                                                        
/*  DECODE CARD DEALT  */                                                      
PCARD:PROC(PC,FLAG);DCL PC BINARY, FLAG BINARY;                                
 DCL SUIT(4)CHAR(8)INIT('SPADER  ','HJÄRTER ','RUTER   ','KLÖVER  ');          
DCL  FACE(4)CHAR(5)INIT('KNEKT','DAM  ','KUNG ','ESS  '), CDRC CHAR(5);        
DCL CDD CHAR(2); DLIN=LINE(LL);                                                
   CK=CARD;CLIN=SUBSTR(DLIN,21,27); IF CC=2 THEN CLIN=SUBSTR(DLIN,1,27);       
   SUITV=(CK-1)/13+1;CK=CARD-(SUITV-1)*13; CARDV=CK; IF CK=1 THEN GOTO FC;     
   IF CARDV>10 THEN GOTO FC;CDD=CARDV;CDRC=CDD CAT '     ';PC=PC+CARDV;        
 GOTO PSUIT;                                                                   
 FC: INDX=CARDV-10; IF CARDV=1 THEN INDX=4;                                    
 CDRC=FACE(INDX);IF CARDV=1 THEN GOTO ACE; PC=PC+10; GOTO PSUIT;               
 ACE: PC=PC+1; IF PC>11 THEN GOTO PSUIT; PC=PC+10; FLAG=1;                     
PSUIT: IF SUBSTR(CLIN,9,1)=' ' THEN CLIN='                           ';        
BLIN=SUIT(SUITV) CAT CDRC CAT '    ';                                          
IF CC=2 THEN GO TO P2;                                                         
 DLIN=BLIN CAT '   '; LINE(LL)=DLIN CAT CLIN;GO TO PP;                         
P2:IF SUBSTR(CLIN,9,1)¬=' ' THEN GOTO P22;                                     
DLIN='                              ';GO TO P23;                               
 P22:DLIN=CLIN CAT '   ';P23: LINE(LL)=DLIN CAT BLIN;                          
PP: LL=LL+1; RETURN; END;                                                      
/*  MAIN PROGRAM STARTS  */                                                    
RULE:CALL KEYFUN(KKK);CALL CLEER(I);                                           
IGEN:PUT FILE(D) SKIP;DO L=1 TO 3;                                             
PUT FILE(D)EDIT('***********************************************')(A);END;     
DO L=1 TO 800;END;PUT FILE(D) EDIT                                             
('*********        M.STENHARDT AB       *********')(A);                        
DO L=1 TO 260;END;PUT FILE(D) EDIT                                             
('*********     HÄLSAR DIG VÄLKOMMEN    *********')(A);                        
DO L=1 TO 260;END;PUT FILE(D) EDIT                                             
('*********            TILL             *********')(A);                        
DO L=1 TO 260;END;PUT FILE(D) EDIT                                             
('*********         Q1 - CASINO         *********')(A);                        
DO L=1 TO 800;END;DO L=1 TO 3;PUT FILE(D) EDIT                                 
('***********************************************')                            
(A(47));END;DO L=1 TO 900;END;PUT FILE(D) EDIT                                 
(' ')(A(47))('           ***   TRYCK RETURN   ***')(A(46));DO L=1 TO 1800;END; 
CALL KEYFUN(KKK);IF KKK THEN GO TO FORTS;GO TO IGEN;                           
                                                                               
FORTS:GET SKIP LIST(DUMB);            L=1; AMOUNT=250;                         
PUT FILE(D) SKIP EDIT(' ')(A(47))('SPELET VI SKA SPELA HETER "BLACKJACK"')     
(A(94))('LAS VEGAS REGLER GÄLLER.')(A(94))('DU FÅR 250 KRONOR ATT STARTA MED.')
(A(94))('TRYCK RETURN')(A(46));GET SKIP LIST(DUMB);                            
CALL SHUFF;                                                                    
GAME: DO I=1 TO 9; LINE(I)=BLK; END;                                           
   IF AMOUNT¬=0 THEN GOTO GGAA; PUT FILE(D)SKIP EDIT('DU ÄR PANK!!!')(A(94))   
('JAG FINNS ALLTID HÄR DÅ DU KÄNNER')(A(47))('FÖR ATT FÖRLORA MER PENGAR.....')
(A(94))('TRYCK RETURN.')(A(47));GET SKIP LIST(DUMB); GOTO DONE;                
GGAA: PUT FILE(D)SKIP EDIT('DU HAR ')(A(7))(AMOUNT)(P'ZZZZZZZZ9')(' KRONOR')   
(A(31));IF IJK=1 THEN IJK=2;                                                   
PUT FILE(D)EDIT('HUR MYCKET SATSAR DU? ')(A(22));                              
GET SKIP LIST(BET);PUT FILE(D)EDIT(BET)(P'-----9')(' ')(A(19));                
BETC=BET; AMTC=AMOUNT; IF SUBSTR(BETC,1,1)=SUBSTR(AMTC,1,1)+2 THEN IJK=1;      
IF BET>0 THEN GOTO GGAB; PUT FILE(D)EDIT('SORRY, DET GÅR JAG INTE PÅ!')(A(47)) 
('TRYCK RETURN')(A(47));GET SKIP LIST(DUMB); GOTO GAME;                        
GGAB: IF BET<=AMOUNT THEN GOTO SST;                                            
PUT FILE(D)EDIT('SORRY, MEN DU HAR INTE SÅ MYCKET!!')(A(47))('TRYCK RETURN')   
(A(47));GET SKIP LIST(DUMB); GOTO GAME;                                        
SST: PFLG=0; DFLG=0; PL=1; DL=1; PCNT=0; DCNT=0;                               
  LL=PL;CC=1;CALL DEAL; CALL PCARD(PCNT,PFLG);PL=LL;CC=2;CALL DEAL;            
 LL=DL;CALL PCARD(DCNT,DFLG);DL=LL;CC=1; LL=PL;CALL DEAL;CALL PCARD(PCNT,PFLG);
   PL=LL; PUT FILE(DISPLAY)SKIP;                                               
HAND:IF PCNT=21 THEN GOTO BLKJP;CALL POUT;ND: PUT FILE(DISPLAY)EDIT            
('VILL DU HA FLER KORT?')(A(47))('SVARA J ELLER N: ')(A(45));                  
GET SKIP LIST(DUMB);PUT FILE(D) EDIT(DUMB)(A(2));                              
   IF DUMB¬='J' THEN GOTO DPLAY; CALL DEAL;                                    
   CC=1;LL=PL;CALL PCARD(PCNT,PFLG);PL=LL;CALL POUT;IF PCNT<22 THEN GOTO ND;   
   IF PFLG¬=1 THEN GOTO BUSP1; PCNT=PCNT-10; PFLG=11; GOTO ND;                 
BUSP1: LL=DL;CC=2;CALL DEAL; CALL PCARD(DCNT,DFLG);DL=LL;                      
   PUT FILE(DISPLAY)EDIT(' ')(A(94)); CALL POUT;                               
BUSP: PUT FILE(D)EDIT('DU FÖRLORADE! VILL DU FORTSÄTTA?')(A(47))               
('SVARA J ELLER N:')(A(46));                                                   
   AMOUNT=AMOUNT-BET;                                                          
NX: GET SKIP LIST(DUMB); IF DUMB='N' THEN GOTO DONE;                           
   IF L<42 THEN GOTO GAME; CALL SHUFF; L=1;GOTO GAME;                          
BLKJP: LL=DL;CC=2;CALL DEAL; CALL PCARD(DCNT,DFLG); DL=LL;                     
    LINE(4)='*** BLACKJACK ****                             ';LINE(3)=BLK;PL=5;
    CALL POUT;                                                                 
WINP:  PUT FILE(D)EDIT('GRATTIS DU VANN!!  VILL DU FORTSÄTTA?')(A(47))         
('SVARA J ELLER N:')(A(46));                                                   
   AMOUNT=AMOUNT+BET;GOTO NX;                                                  
DPLAY: IF IJK=2 THEN GO TO XX2;                                                
 CALL DEAL;XXY: LL=DL; CC=2; CALL PCARD(DCNT,DFLG); DL=LL;                     
   CALL POUT; PUT FILE(DISPLAY)EDIT(' ')(A(94)); IF DCNT=21 THEN GOTO BLKJD;   
   IF DCNT>16 THEN GOTO DCDD;DO I=1 TO 500; END;                               
DPLAA: IF IJK=2 THEN GO TO XX1;                                                
 CALL DEAL;XXX: CC=2; LL=DL; CALL PCARD(DCNT,DFLG); DL=LL;                     
  CALL POUT; IF DCNT>21 THEN GOTO TTNN;DXX: PUT FILE(DISPLAY)EDIT(' ')(A(94)); 
   IF DCNT>16 THEN GOTO DCDD;DO I=1 TO 500; END;                               
   GOTO DPLAA;                                                                 
XX1: CALL  XDEAL; GO TO XXX;XX2: CALL XDEAL; GO TO XXY;                        
TTNN: IF DFLG¬=1 THEN GOTO WINP; DFLG=11; DCNT=DCNT-10; GOTO DXX;              
BLKJD: CLIN=LINE(6); IF SUBSTR(CLIN,5,1)¬='O' THEN CLIN=BLK;  DL=5;            
  DLIN=CLIN CAT '   ';LINE(4)=DLIN CAT '*** BLACKJACK ***          ';CALL POUT;
GO TO BUSP;                                                                    
DCDD: CALL POUT;IF DCNT>PCNT THEN GOTO BUSP; IF DCNT<PCNT THEN GOTO WINP;      
PUT FILE(D)EDIT('*** LIKA ***     VILL DU FORTSÄTTA?')(A(47))                  
('SVARA J ELLER N:')(A(45));GO TO NX;                                          
DONE: GOTO RULE;END;