Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
81
Task/Number-names/PL-M/number-names.plm
Normal file
81
Task/Number-names/PL-M/number-names.plm
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
100H:
|
||||
BDOS: PROCEDURE (FN, ARG); DECLARE FN BYTE, ARG ADDRESS; GO TO 5; END BDOS;
|
||||
EXIT: PROCEDURE; CALL BDOS(0,0); END EXIT;
|
||||
PRINT: PROCEDURE (S); DECLARE S ADDRESS; CALL BDOS(9,S); END PRINT;
|
||||
|
||||
DECLARE FCB$NAME LITERALLY '5DH'; /* CP/M STORES COMMAND ARGUMENT HERE */
|
||||
|
||||
/* READ ASCII NUMBER */
|
||||
READ$NUMBER: PROCEDURE (PTR) ADDRESS;
|
||||
DECLARE PTR ADDRESS, C BASED PTR BYTE, RSLT ADDRESS;
|
||||
RSLT = 0;
|
||||
DO WHILE '0' <= C AND C <= '9';
|
||||
RSLT = RSLT * 10 + C - '0';
|
||||
PTR = PTR + 1;
|
||||
END;
|
||||
RETURN RSLT;
|
||||
END;
|
||||
|
||||
/* SPELL 16-BIT NUMBER */
|
||||
SPELL: PROCEDURE (N);
|
||||
DECLARE N ADDRESS;
|
||||
IF N=0 THEN DO;
|
||||
CALL PRINT(.'ZERO$');
|
||||
RETURN;
|
||||
END;
|
||||
SMALL: PROCEDURE (N) ADDRESS;
|
||||
DECLARE N BYTE;
|
||||
DO CASE N;
|
||||
RETURN .'$'; RETURN .'ONE$'; RETURN .'TWO$';
|
||||
RETURN .'THREE$'; RETURN .'FOUR$'; RETURN .'FIVE$';
|
||||
RETURN .'SIX$'; RETURN .'SEVEN$'; RETURN .'EIGHT$';
|
||||
RETURN .'NINE$'; RETURN .'TEN$'; RETURN .'ELEVEN$';
|
||||
RETURN .'TWELVE$'; RETURN .'THIRTEEN$'; RETURN .'FOURTEEN$';
|
||||
RETURN .'FIFTEEN$'; RETURN .'SIXTEEN$'; RETURN .'SEVENTEEN$';
|
||||
RETURN .'EIGHTEEN$'; RETURN .'NINETEEN$';
|
||||
END;
|
||||
END SMALL;
|
||||
TEENS: PROCEDURE (N) ADDRESS;
|
||||
DECLARE N BYTE;
|
||||
DO CASE N-2;
|
||||
RETURN .'TWENTY$';
|
||||
RETURN .'THIRTY$';
|
||||
RETURN .'FORTY$';
|
||||
RETURN .'FIFTY$';
|
||||
RETURN .'SIXTY$';
|
||||
RETURN .'SEVENTY$';
|
||||
RETURN .'EIGHTY$';
|
||||
RETURN .'NINETY$';
|
||||
END;
|
||||
END TEENS;
|
||||
LESS$100: PROCEDURE (N);
|
||||
DECLARE N BYTE;
|
||||
IF N >= 20 THEN DO;
|
||||
CALL PRINT(TEENS(N/10));
|
||||
N = N MOD 10;
|
||||
IF N > 0 THEN CALL PRINT(.'-$');
|
||||
END;
|
||||
CALL PRINT(SMALL(N));
|
||||
END LESS$100;
|
||||
LESS$1000: PROCEDURE (N);
|
||||
DECLARE N ADDRESS;
|
||||
IF N >= 100 THEN DO;
|
||||
CALL LESS$100(N/100);
|
||||
CALL PRINT(.' HUNDRED$');
|
||||
N = N MOD 100;
|
||||
IF N > 0 THEN CALL PRINT(.' $');
|
||||
END;
|
||||
CALL LESS$100(N);
|
||||
END LESS$1000;
|
||||
IF N >= 1000 THEN DO;
|
||||
CALL LESS$1000(N/1000);
|
||||
CALL PRINT(.' THOUSAND$');
|
||||
N = N MOD 1000;
|
||||
IF N > 0 THEN CALL PRINT(.' $');
|
||||
END;
|
||||
CALL LESS$1000(N);
|
||||
END SPELL;
|
||||
|
||||
CALL SPELL(READ$NUMBER(FCB$NAME));
|
||||
CALL EXIT;
|
||||
EOF
|
||||
Loading…
Add table
Add a link
Reference in a new issue