home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol043
/
macros.pgn
< prev
next >
Wrap
Text File
|
1984-04-29
|
7KB
|
431 lines
U:;$^
:TOP;
@ EXTRN@ ?MSG;
@ EXTRN@ ?BOOT,?INIT,?ENDING;
@ COMMON@ /IOCTRL/;
.ER@:@ DB@ 0;
.AC@:@ DB@ 0;
.IAV@:@ DW@ 0,0,0,0,0,0;
@ COMMON@ / / ;
:BEGINMAIN(AC,IAV);
@ DSEG;
.ERASER.@: DB@ 0;
@ CSEG;
?SETAC@:@ MVI@ A,1;
@ RM;
@ RZ;
@ XRA@ A;
@ RET;
?INTCK@:@ MVI@ B,1;
@ LDAX@ D;
@ CMP@ M;
@ JNZ@ @$+8;
@ INX@ H;
@ INX@ D;
@ LDAX@ D;
@ XRA@ M;
@ RZ;
@ MOV@ A,B;
@ RET;
?START@:@ LXI@ SP,?STACK;
@ CALL@ ?INIT;
:PARAMETER K$$=$$$;
.K^P1C^P2C@ EQU@ ^V3S^V4*^V5*^!0N;
:MS '$$$$$$$$$';
@ CALL@ ?MSG;
@ DB@ '^P1C^P2C^P3C^P4C^P5C^P6C^P7C^P8C^P9C';
:GOSUB $$;
@ CALL@ ..^P1C^P2C;
:GOTO $$;
@ JMP@ ?LL0^P1C^P2C;
:$$=+000;
@ XRA@ A;
@ STA@ .^P1C^P2C;
:I$$=+00000;
@ LXI@ H,0;
@ SHLD@ .I^P1C^P2C;
:I$$=+K$$;
@ LXI@ H,.K^P3C^P4C;
@ SHLD@ .I^P1C^P2C;
:PACK(I$$,$$,$$);
@ LDA@ .^P5C^P6C;
@ MOV@ L,A;
@ LDA@ .^P3C^P4C;
@ MOV@ H,A;
@ SHLD@ .I^P1C^P2C;
:UNPACK(I$$,$$,$$);
@ LHLD@ .I^P1C^P2C;
@ MOV@ A,L;
@ STA@ .^P3C^P4C;
@ MOV@ A,H;
@ STA@ .^P5C^P6C;
:CALL I$$;
@ LXI@ H,@$+8;
@ PUSH@ H;
@ LHLD@ .I^P1C^P2C;
@ PCHL;
:$$=+K$$;
@ MVI@ A,.K^P3C^P4C;
@ STA@ .^P1C^P2C;
:$$='$';
@ MVI@ A,'^P3C';
@ STA@ .^P1C^P2C;
:$$=+$$$;
@ MVI@ A,^V3S^V4*^V5*^!0N;
@ STA@ .^P1C^P2C;
:I$$=+$$$$$;
@ LXI@ H,^V3S^V4*^V5*^V6*^V7*^!0N;
@ SHLD@ .I^P1C^P2C;
:$$=$$;
@ LDA@ .^P3C^P4C;
@ STA@ .^P1C^P2C;
:$$++;
@ LXI@ H,.^P1C^P2C;
@ INR@ M;
:$$--;
@ LXI@ H,.^P1C^P2C;
@ DCR@ M;
:I$$=$$;
@ LHLD@ .^P3C^P4C;
@ MVI@ H,0;
@ SHLD@ .I^P1C^P2C;
:$$=I$$;
@ LDA@ .I^P3C^P4C;
@ STA@ .^P1C^P2C;
:I$$=I$$;
@ LHLD@ .I^P3C^P4C;
@ SHLD@ .I^P1C^P2C;
:$$=$$($$);
@ LHLD@ .^P5C^P6C;
@ MVI@ H,0;
@ LXI@ D,.^P3C^P4C;
@ DAD@ D;
@ MOV@ A,M;
@ STA@ .^P1C^P2C;
:I$$=I$$($$);
@ LHLD@ .^P5C^P6C;
@ MVI@ H,0;
@ LXI@ D,.I^P3C^P4C;
@ DAD@ H;
@ DAD@ D;
@ LXI@ D,.I^P1C^P2C;
@ MOV@ A,M;
@ STAX@ D;
@ INX@ D;
@ INX@ H;
@ MOV@ A,M;
@ STAX@ D;
:$$=$$(I$$);
@ LHLD@ .I^P5C^P6C;
@ LXI@ D,.^P3C^P4C;
@ DAD@ D;
@ MOV@ A,M;
@ STA@ .^P1C^P2C;
:I$$=I$$(I$$);
@ LHLD@ .I^P5C^P6C;
@ LXI@ D,.I^P3C^P4C;
@ DAD@ H;
@ DAD@ D;
@ MOV@ E,M;
@ INX@ H;
@ MOV@ D,M;
@ XCHG;
@ SHLD@ .I^P1C^P2C;
:$$($$)=$$;
@ LHLD@ .^P3C^P4C;
@ MVI@ H,0;
@ LXI@ D,.^P1C^P2C;
@ DAD@ D;
@ LDA@ .^P5C^P6C;
@ MOV@ M,A;
:I$$($$)=I$$;
@ LHLD@ .^P3C^P4C;
@ MVI@ H,0;
@ DAD@ H;
@ LXI@ D,.I^P1C^P2C;
@ DAD@ D;
@ LXI@ D,.I^P5C^P6C;
@ LDAX@ D;
@ MOV@ M,A;
@ INX@ D;
@ INX@ H;
@ LDAX@ D;
@ MOV@ M,A;
:$$(I$$)=$$;
@ LHLD@ .I^P3C^P4C;
@ LXI@ D,.^P1C^P2C;
@ DAD@ D;
@ LDA@ .^P5C^P6C;
@ MOV@ M,A;
:I$$(I$$)=I$$;
@ LHLD@ .I^P3C^P4C;
@ LXI@ D,.I^P1C^P2C;
@ DAD@ H;
@ DAD@ D;
@ XCHG;
@ LHLD@ .I^P5C^P6C;
@ MOV@ A,L;
@ STAX@ D;
@ INX@ D;
@ MOV@ A,H;
@ STAX@ D;
:$$=$$+$$;
@ LXI@ H,.^P5C^P6C;
@ LDA@ .^P3C^P4C;
@ ADD@ M;
@ STA@ .^P1C^P2C;
:$$=$$-$$;
@ LXI@ H,.^P5C^P6C;
@ LDA@ .^P3C^P4C;
@ SUB@ M;
@ STA@ .^P1C^P2C;
:$$=$$&$$;
@ LXI@ H,.^P5C^P6C;
@ LDA@ .^P3C^P4C;
@ ANA@ M;
@ STA@ .^P1C^P2C;
:$$=$$?$$;
@ LXI@ H,.^P5C^P6C;
@ LDA@ .^P3C^P4C;
@ ORA@ M;
@ STA@ .^P1C^P2C;
:I$$++;
@ LHLD@ .I^P1C^P2C;
@ INX@ H;
@ SHLD@ .I^P1C^P2C;
:I$$--;
@ LHLD@ .I^P1C^P2C;
@ DCX@ H;
@ SHLD@ .I^P1C^P2C;
:I$$=-I$$;
@ LHLD@ .I^P3C^P4C;
@ CALL@ ?ICOMP;
@ EXTRN@ ?ICOMP;
@ SHLD@ .I^P1C^P2C;
:I$$=I$$+I$$;
@ LHLD@ .I^P5C^P6C;
@ XCHG;
@ LHLD@ .I^P3C^P4C;
@ DAD@ D;
@ SHLD@ .I^P1C^P2C;
:I$$=I$$-I$$;
@ LHLD@ .I^P5C^P6C;
@ XCHG;
@ LHLD@ .I^P3C^P4C;
@ CALL@ ?ISUB;
@ EXTRN@ ?ISUB;
@ SHLD@ .I^P1C^P2C;
:I$$=I$$*I$$;
@ LHLD@ .I^P5C^P6C;
@ XCHG;
@ LHLD@ .I^P3C^P4C;
@ CALL@ ?IMUL;
@ EXTRN@ ?IMUL;
@ SHLD@ .I^P1C^P2C;
:I$$=I$$/I$$;
@ LHLD@ .I^P5C^P6C;
@ XCHG;
@ LHLD@ .I^P3C^P4C;
@ CALL@ ?IDIV;
@ EXTRN@ ?IDIV;
@ SHLD@ .I^P1C^P2C;
:$$=$$==$$;
@ LXI@ H,.^P3C^P4C;
@ LDA@ .^P5C^P6C;
@ CMP@ M;
@ JZ@ @$+5;
@ XRA@ A;
@ LXI@ B,013EH;
@ STA@ .^P1C^P2C;
:$$=$$!=$$;
@ LXI@ H,.^P5C^P6C;
@ LDA@ .^P3C^P4C;
@ CMP@ M;
@ JNZ@ @$+5;
@ XRA@ A;
@ LXI@ B,013EH;
@ STA@ .^P1C^P2C;
:$$=$$<=$$;
@ LXI@ H,.^P5C^P6C;
@ LDA@ .^P3C^P4C;
@ CMP@ M;
@ CALL@ ?SETAC;
@ STA@ .^P1C^P2C;
:$$=$$<!$$;
@ LDA@ .^P3C^P4C;
@ LXI@ H,.^P5C^P6C;
@ CMP@ M;
@ RAL;
@ ANI@ 1;
@ STA@ .^P1C^P2C;
:$$=!$$;
@ LDA@ .P3C^P4C;
@ CMA;
@ ANI@ 1;
@ STA@ .^P1C^P2C;
:$$=I$$==I$$;
@ LXI@ D,.I^P5C^P6C;
@ LHLD@ .I^P3C^P4C;
@ LDAX@ D;
@ XRA@ L;
@ JNZ@ @$+12;
@ INX@ D;
@ LDAX@ D;
@ XRA@ H;
@ JNZ@ @$+6;
@ MVI@ A,1;
@ LXI@ B,003EH;
@ STA@ .^P1C^P2C;
:$$=I$$!=I$$;
@ LXI@ D,.I^P5C^P6C;
@ LXI@ H,.I^P3C^P4C;
@ CALL@ ?INTCK;
@ STA@ .^P1C^P2C;
:$$=I$$<=I$$;
@ LHLD@ .I^P5C^P6C;
@ XCHG;
@ LHLD@ .I^P3C^P4C;
@ CALL@ ?CDEHL;
@ EXTRN@ ?CDEHL;
@ CALL@ ?SETAC;
@ STA@ .^P1C^P2C;
:$$=I$$<!I$$;
@ LHLD@ .I^P5C^P6C;
@ XCHG;
@ LHLD@ .I^P3C^P4C;
@ CALL@ ?CDEHL;
@ EXTRN@ ?CDEHL;
@ RAL;
@ ANI@ 1;
@ STA@ .^P1C^P2C;
:CASE $$;
^!0P^!9P^!8P
@ JMP@ .XC^P0N;
@ ORG@ @$-^P9N;
.UP^P8N@:@ LXI@ H,.ERASER.;
@ LDA@ .^P1C^P2C;
@ CMP@ M;
@ JNZ@ .UP^U1S^S8N^N0S^P0S;
:ASSOCIATE FCB $ WITH I$$;
@ LXI@ D,?IFCB+((^P1C-1)*36);
@ LXI@ H,.I^P2C^P3C;
@ CALL@ ?ATACH;
@ EXTRN@ ?ATACH,?IFCB;
:WRITE $$;
@ LDA@ .^P1C^P2C;
@ CALL@ ?WRNXT;
@ EXTRN@ ?WRNXT;
:CLOSE $$;
@ LXI@ H,.^P1C^P2C;
@ CALL@ ?BCLOF;
@ EXTRN@ ?BCLOF;
:STOP $;
@ MVI@ A,^P1C;
@ CALL@ ?ISTOP;
@ EXTRN@ ?ISTOP;
:OPEN $$ FOR $$ AT I$$;
@ LXI@ D,.^P1C^P2C;
@ LDA@ .^P3C^P4C;
@ LHLD@ .I^P5C^P6C;
@ CALL@ ?IOPEN;
@ EXTRN@ ?IOPEN;
:ENDSUB;
@ RET;
:RETURN;
@ RET;
:EXTERNAL PROCEDURE $$;
@ CALL@ ..$$;
@ EXTRN@ ..$$;
:READ $$ FROM $$;
@ LXI@ H,.^P1C^P2C;
@ LXI@ D,.^P3C^P4C;
@ CALL@ ?BREAD;
@ EXTRN@ ?BREAD;
:WRITE $$ INTO $$;
@ LDA@ .^P1C^P2C;
@ LXI@ D,.^P3C^P4C;
@ CALL@ ?BWRIT;
@ EXTRN@ ?BWRIT;
:ENDMAIN;
@ CALL@ ?ENDING;
@ JMP@ ?BOOT;
:LOC $$;
?LL0^P1C^P2C@:;
:CHOOSE ON $$;
@ LDA@ .^P1C^P2C;
@ STA@ .ERASER.;
^U0S; GENERATE LABEL FOR ENDCHOOSE OR DEFAULT
^N3S; PUT A 3 ON THE STACK TO KILL JUMP WITH AN ORG
^U1S; PUT .UP LABEL ON THE STACK
:DEFAULT;
^!0P^!9P^!8P
@ JMP@ .XC^P0N;
@ ORG@ $-^P9N;
.UP^P8N@:;
^P0S
:ENDCHOOSE;
.XC^!0N@:;
:WHILE;
^U0S.X^S0N@:;
:ON $$;
@ LDA@ .^P1C^P2C;
@ ORA@ A;
@ JZ@ .W^S0N;
:ENDWHILE;
@ JMP@ .X^S0N;
.W^!0N@:;
:SUB $$;
..^P1C^P2C@:;
:IF $$;
@ LDA@ .^P1C^P2C;
@ ORA@ A;
@ JZ@ .F^U0S^S0N;
:ELSE;
@ JMP@ .F^U0P^P0N^!9P;
.F^P9N@:;
^P0S
:ENDIF;
.F^!0N@:;
:BYTE $$;
.^P1C^P2C@:@ DS@ 1;
:INT I$$;
.I^P1C^P2C@:@ DS@ 2;
:BYTE $$($$$$$);
.^P1C^P2C@:@ DS@ ^V3S^V4*^V5*^V6*^V7*^!0N;
:BYTE $$($$$);
.^P1C^P2C@:@ DS@ ^V3S^V4*^V5*^!0N;
:INT I$$($$$$$);
.I^P1C^P2C@:@ DS@ 2*^V3S^V4*^V5*^V6*^V7*^!0N;
:INT I$$($$$);
.I^P1C^P2C@:@ DS@ 2*^V3S^V4*^V5*^!0N;
:BOTTOM;
@ DSEG;
@ DS@ 60;
?STACK@:@ DW@ 0;
@ END@ ?START;
:READBUF $$;
@ LXI@ D,.^P1C^P2C;
@ CALL@ ?RDBUF;
@ EXTRN@ ?RDBUF;
:WRITEBUF $$;
@ LXI@ D,.^P1C^P2C;
@ CALL@ ?WRBUF;
@ EXTRN@ ?WRBUF;
:READ $$;
@ CALL@ ?RNX;
@ EXTRN@ ?RNX;
@ STA@ .^P1C^P2C;
:LOCAL VARIABLES;
@ DSEG;
:ENDLOCAL;
@ CSEG;
:EXTERNAL PROCEDURE NAME $$;
@ PUBLIC@ ..^P1C^P2C;
@ CSEG;
..^P1C^P2C@:;
:PROCEDURE END;
@ RET;
@ END;