DataMuseum.dk

Presents historical artifacts from the history of:

Christian Rovsing CR7, CR8 & CR16 CP/M

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

See our Wiki for more about Christian Rovsing CR7, CR8 & CR16 CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦65375ae0f⟧ TextFile

    Length: 2560 (0xa00)
    Types: TextFile
    Names: »BAKGAM.BAS«

Derivation

└─⟦69a509965⟧ Bits:30005211 CR8 BASIC Games
    └─ ⟦this⟧ »BAKGAM.BAS« 

TextFile

1 REM *** BAKGAM.BAS ***
2 POKE 1221,80
5 DIM B$(24,8)
10 DIM N$(2)
11 DIM C$(2)
12 INPUT"FIRST PLAYER'S NAME";N$(1)
14 INPUT"SECOND PLAYER'S NAME";N$(2)
16 GOSUB 1000
18 IF D1=D2 GOTO 16
20 IF D1>D2 THEN D=-1:T=1
25 IF D1<D2 THEN D=1:T=2
30 DIM A(25),P$(2)
33 P$(1)="WHITE"
34 C$(1)="B"
36 P$(2)="BLACK"
38 C$(2)="W"
40 A(1)=2:A(24)=-2:A(6)=-5:A(19)=5
45 A(8)=-3:A(17)=3:A(12)=5:A(13)=-5
50 FOR I=1 TO 24
55 FOR J=1 TO 8:B$(I,J)=" ":NEXT J
57 IF A(I)=0 GOTO 70
59 S$="W"
60 IF A(I)<0 THEN S$="B"
63 FOR J=1 TO ABS(A(I))
65 B$(I,J)=S$
67 NEXT J
70 NEXT I
75 PRINT -A(25);"ON BAR";TAB(20);N$(1);" BLACK"
76 PRINT"    1   2   3   4   5   6     7   8   9  10  11  12"
77 PRINT"-------------------------------------------------------"
78 FOR I=1 TO 8:Z=0
79 PRINT"**  ";
80 FOR K=0 TO 6 STEP 6
81 FOR J=1 TO 5
200 PRINT B$(J+K,I);"  !  ";
205 IF ABS(A(J+K))>I THEN Z=1
210 NEXT J
211 PRINT B$(K+6,I);"  **  ";
212 IF ABS(A(K+6))>I THEN Z=1
216 NEXT K
220 PRINT
225 IF Z=0 GOTO 240
230 NEXT I
240 FOR I=8 TO 1 STEP -1
242 PRINT"**  ";
245 FOR K=6 TO 0 STEP -6
250 FOR J=18 TO 14 STEP -1
260 PRINT B$(J+K,I);"  !  ";
270 NEXT J
273 PRINT B$(13+K,I);"  **  ";
276 NEXT K
280 PRINT
290 NEXT I
295 PRINT"------------------------------------------------------"
296 PRINT"   24  23  22  21  20  19    18  17  16  15  14  13"
297 PRINT A(0);"ON BAR";TAB(20);N$(2);" WHITE"
298 N=0:D=-D:T=3-T
299 PRINT N$(T);" YOUR DICE ARE";D1;D2;".  INPUT YOUR MOVES"
300 IF D1=D2 THEN INPUT C:M=D1:GOTO 340
310 INPUT C,M
320 IF M=D1 GOTO 340
330 IF M<>D2 GOTO 570
340 IF A(50-25*T)=0 GOTO 360
350 IF C<>50-25*T GOTO 520
360 IF D*A(C)<1 GOTO 500
370 IF (C+D*M)*D<(25*T-25) GOTO 390
380 PRINT"BEARS A PIECE OFF"
385 GOTO 413
390 IF A(C+D*M)*D<-1 GOTO 440
393 IF A(C+D*M)*D>-1 GOTO 400
394 PRINT"THAT HITS A BLOT"
395 A(C+D*M)=0
397 A(25*T-25)=A(25*T-25)-D
400 REM
403 A(C+D*M)=A(C+D*M)+D
406 B$(C+D*M,ABS(A(C+D*M)))=C$(T)
410 IF ABS(C-12.5)>12 GOTO 414
413 B$(C,ABS(A(C)))=" "
414 A(C)=A(C)-D
415 N=N+1
420 IF N=4 GOTO 435
425 IF D1=D2 GOTO 300
430 IF N<>2 GOTO 300
435 GOSUB 1000
437 GOTO 75
440 PRINT"POINT";C+D*M;"IS BLOCKED.PLEASE ENTER A CORRECT MOVE"
450 GOTO 300
500 PRINT"YOU HAVE NO STONES ON POINT"C",PLEASE ENTER THE CORRECT MOVE"
510 GOTO 300
520 PRINT"YOU MUST MOVE OFF THE BAR FIRST"
530 GOTO 300
570 IF M=0 GOTO 435
575 PRINT"YOU MUST MOVE BY";D1;"OR";D2
580 GOTO 300
1000 D1=INT(RND(1)*6+1)
1010 D2=INT(RND(1)*6+1)
1020 RETURN
«eof»