Data update
This commit is contained in:
parent
0df55f9f24
commit
aec8ed51b6
1045 changed files with 18889 additions and 2777 deletions
127
Task/Magic-8-ball/PL-M/magic-8-ball.plm
Normal file
127
Task/Magic-8-ball/PL-M/magic-8-ball.plm
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
100H:
|
||||
/*
|
||||
THE PROCEDURES CLOCK AND RND USE A FEATURE OF PICKLES AND TROUT CP/M2
|
||||
AND ARE NOT LIKELY TO WORK ON OTHER VERSIONS OF CP/M
|
||||
*/
|
||||
|
||||
BDOS: PROCEDURE (FN, ARG) BYTE; DECLARE FN BYTE, ARG ADDRESS; GO TO 5; END BDOS;
|
||||
EXIT: PROCEDURE; MEMORY(0)=BDOS(0,0); END EXIT;
|
||||
|
||||
TTYIN: PROCEDURE BYTE; DECLARE C BYTE; RETURN BDOS(1,0); END TTYIN;
|
||||
|
||||
PRINT: PROCEDURE (S); DECLARE S ADDRESS; S=BDOS(9,S); END PRINT;
|
||||
|
||||
CLOCK: PROCEDURE;
|
||||
DECLARE B$ADR ADDRESS; DECLARE B BASED B$ADR BYTE;
|
||||
B$ADR=047H;
|
||||
B = 0EH; GO TO 043H; END CLOCK;
|
||||
|
||||
RND: PROCEDURE ADDRESS;
|
||||
DECLARE E$ADR ADDRESS; DECLARE E BASED E$ADR BYTE;
|
||||
DECLARE D$ADR ADDRESS; DECLARE D BASED D$ADR BYTE;
|
||||
DECLARE L$ADR ADDRESS; DECLARE L BASED L$ADR BYTE;
|
||||
DECLARE H$ADR ADDRESS; DECLARE H BASED H$ADR BYTE;
|
||||
DECLARE (NUM, DE, HL) ADDRESS;
|
||||
E$ADR=048H; D$ADR=049H; L$ADR=04AH; H$ADR=04BH;
|
||||
CALL CLOCK;
|
||||
DE = D * 255 + E; HL = H * 255 + L; NUM = DE * HL; RETURN NUM;
|
||||
END RND;
|
||||
|
||||
EIGHTBALL: DO;
|
||||
|
||||
|
||||
DECLARE CR LITERALLY '13';
|
||||
DECLARE CRLF(3) BYTE INITIAL (13,10,'$');
|
||||
DECLARE CHR BYTE;
|
||||
DECLARE NUM ADDRESS;
|
||||
DECLARE GREETING(30) BYTE INITIAL
|
||||
('ASK AND ALL WILL BE REVEALED $');
|
||||
DECLARE MSG01(41) BYTE INITIAL
|
||||
( 'AS I SEE IT, YES $' );
|
||||
DECLARE MSG02(41) BYTE INITIAL
|
||||
( 'ASK AGAIN LATER $' );
|
||||
DECLARE MSG03(41) BYTE INITIAL
|
||||
( 'BETTER NOT TELL YOU NOW $' );
|
||||
DECLARE MSG04(41) BYTE INITIAL
|
||||
( 'CANNOT PREDICT NOW $' );
|
||||
DECLARE MSG05(41) BYTE INITIAL
|
||||
( 'CONCENTRATE AND ASK AGAIN $' );
|
||||
DECLARE MSG06(41) BYTE INITIAL
|
||||
( 'DON''T BET ON IT $' );
|
||||
DECLARE MSG07(41) BYTE INITIAL
|
||||
( 'IT IS CERTAIN $' );
|
||||
DECLARE MSG08(41) BYTE INITIAL
|
||||
( 'IT IS DECIDEDLY SO $' );
|
||||
DECLARE MSG09(41) BYTE INITIAL
|
||||
( 'MOST LIKELY $' );
|
||||
DECLARE MSG10(41) BYTE INITIAL
|
||||
( 'MY REPLY IS NO $' );
|
||||
DECLARE MSG11(41) BYTE INITIAL
|
||||
( 'MY SOURCES SAY MAYBE $' );
|
||||
DECLARE MSG12(41) BYTE INITIAL
|
||||
( 'MY SOURCES SAY NO $' );
|
||||
DECLARE MSG13(41) BYTE INITIAL
|
||||
( 'OUTLOOK GOOD $' );
|
||||
DECLARE MSG14(41) BYTE INITIAL
|
||||
( 'OUTLOOK NOT SO GOOD $' );
|
||||
DECLARE MSG15(41) BYTE INITIAL
|
||||
( 'REPLY HAZY, TRY AGAIN $' );
|
||||
DECLARE MSG16(41) BYTE INITIAL
|
||||
( 'SIGNS POINT TO YES $' );
|
||||
DECLARE MSG17(41) BYTE INITIAL
|
||||
( 'VERY DOUBTFUL $' );
|
||||
DECLARE MSG18(41) BYTE INITIAL
|
||||
( 'WITHOUT A DOUBT $' );
|
||||
DECLARE MSG19(41) BYTE INITIAL
|
||||
( 'YES $' );
|
||||
DECLARE MSG20(41) BYTE INITIAL
|
||||
( 'YES, DEFINITELY $' );
|
||||
DECLARE MSG21(41) BYTE INITIAL
|
||||
( 'YES, PROBABLY NOT $' );
|
||||
DECLARE MSG22(41) BYTE INITIAL
|
||||
( 'YOU MAY RELY ON IT $' );
|
||||
DECLARE MSG23(41) BYTE INITIAL
|
||||
( 'YOUR QUESTION HAS ALREADY BEEN ANSWERED $' );
|
||||
|
||||
NUM = RND MOD 24;
|
||||
|
||||
CALL PRINT(.GREETING);
|
||||
CALL PRINT(.CRLF);
|
||||
|
||||
DO WHILE CHR <> CR;
|
||||
CHR = TTYIN;
|
||||
END;
|
||||
|
||||
CALL PRINT(.CRLF);
|
||||
|
||||
DO CASE NUM;
|
||||
CALL PRINT(.MSG01);
|
||||
CALL PRINT(.MSG02);
|
||||
CALL PRINT(.MSG03);
|
||||
CALL PRINT(.MSG04);
|
||||
CALL PRINT(.MSG05);
|
||||
CALL PRINT(.MSG06);
|
||||
CALL PRINT(.MSG07);
|
||||
CALL PRINT(.MSG08);
|
||||
CALL PRINT(.MSG09);
|
||||
CALL PRINT(.MSG10);
|
||||
CALL PRINT(.MSG11);
|
||||
CALL PRINT(.MSG12);
|
||||
CALL PRINT(.MSG13);
|
||||
CALL PRINT(.MSG14);
|
||||
CALL PRINT(.MSG15);
|
||||
CALL PRINT(.MSG16);
|
||||
CALL PRINT(.MSG17);
|
||||
CALL PRINT(.MSG18);
|
||||
CALL PRINT(.MSG19);
|
||||
CALL PRINT(.MSG20);
|
||||
CALL PRINT(.MSG21);
|
||||
CALL PRINT(.MSG22);
|
||||
CALL PRINT(.MSG23);
|
||||
END;
|
||||
CALL PRINT(.CRLF);
|
||||
|
||||
CALL EXIT;
|
||||
|
||||
END;
|
||||
EOF
|
||||
Loading…
Add table
Add a link
Reference in a new issue