-00020 * Direct Page definitions for BIF\r00030 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00060 * This file is dependent on BIF/M definitions\r00100 DPAGE EQU *\r00105 VDP EQU DPAGE/256\r00110 * ORG needs to leave space for this code\r00120 SETDP VDP\r00130 * COLD needs to load VDP into DP register\r00500 *\r00510 * Direct Page variables\r00600 UP RMB 2\r00610 RMB 8 spares\r01000 *\r{ bifc_vm.c \r01010 * nest into icode list\r01020 * call by JSR\r01030 XCOL LDX ,S list ptr\r01040 STY ,S nest old\r01050 TFR X,Y interpret\r01060 NEXT\r01070 *\r}\r{ symbol.c\r01080 * PUSH FOLLOWING WORD\r01090 * call by JSR for CONSTANT\r01100 XCON LDD [,S++]\r01110 PSHU D\r01120 NEXT\r01130 *\r01140 * push following address\r01150 * call by JSR for VARIABLE address\r01160 XVAR PULS D\r01170 PSHU D\r01180 NEXT\r01190 * (same code as R>, but in DP)\r01200 *\r01210 * push address of USER variable\r01215 * call by JSR\r01220 XUSER LDB [,S++] one byte offset\r01225 CLRA\r01230 ADDD <UP\r01240 PSHU D\r01250 NEXT\r01260 *\r01300 * push address of LINEAR array entry\r01305 * call by JSR\r01310 X1ARR PULS X\r01320 LDD ,U index\r01330 SUBD ,X base\r01340 CMPD 2,X width\r01350 BLO X1ARRS\r01360 LDD #$0C\r01365 PSHU D\r01370 JMP ERROR\r01380 X1ARRS PSHS A\r01390 LDA 4,X size\r01400 MUL\r01410 STD ,U\r01420 PULS A ms byte\r01430 LDB 4,X\r01440 MUL\r01450 TFR B,A\r01460 ADDA ,U\r01470 LDB 1,U\r01480 LEAX 5,X past header\r01490 LEAX D,X\r01500 STX ,U\r01510 NEXT\r01520 * LINEAR array header format:\r01530 * FDB BASE (lowest index)\r01540 * FDB WIDTH (# of elements)\r01550 * FCB SIZE (< 256 bytes / element)\r01560 * RMB SIZE*WIDTH (data)\r01700 *\r01710 * push content of USER variable\r01715 * call by JSR\r01720 XUCON LDX <UP\r01722 LDB [,S++] one byte offset\r01725 CLRA\r01730 LDD D,X\r01740 PSHU D\r01750 NEXT\r01800 *\r01802 * store VOCABULARY pointer in root\r01805 * call by JSR\r01810 XVOC LDX <UP\r01820 PULS D\r01830 STD UROOT,X\r01840 NEXT\r01850 *\r01860 * indirect into icode list following\r01870 * DOES> in defining definition\r01880 * call by JSR\r01890 XDOES LDX ,S pfa\r01900 LDD ,X++ list ptr\r01920 PSHU X parameters\r01930 STY ,S nest old\r01940 TFR D,Y interpret\r01950 NEXT\r01960 *\r02000 * push double constant\r02010 * call by JSR\r02020 XDCON PULS X\r02030 LDD ,X++\r02040 LDX ,X++\r02050 PSHU D,X\r02060 NEXT\r02070 *\r}\r40000 ORG DPAGE+256 if code fits\r40010 SETDP 0 not yet valid\r
\ No newline at end of file
+00020 * Direct Page definitions for BIF\r00030 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM)\r00060 * This file is dependent on BIF/M definitions\r00100 DPAGE EQU *\r00105 VDP EQU DPAGE/256\r00110 * ORG needs to leave space for this code\r00120 SETDP VDP\r00130 * COLD needs to load VDP into DP register\r00500 *\r00510 * Direct Page variables\r00600 UP RMB 2\r00610 RMB 8 spares\r01000 *\r01010 * nest into icode list\r01020 * call by JSR\r01030 XCOL LDX ,S list ptr\r01040 STY ,S nest old\r01050 TFR X,Y interpret\r01060 NEXT\r01070 *\r01080 * PUSH FOLLOWING WORD\r01090 * call by JSR for CONSTANT\r01100 XCON LDD [,S++]\r01110 PSHU D\r01120 NEXT\r01130 *\r01140 * push following address\r01150 * call by JSR for VARIABLE address\r01160 XVAR PULS D\r01170 PSHU D\r01180 NEXT\r01190 * (same code as R>, but in DP)\r01200 *\r01210 * push address of USER variable\r01215 * call by JSR\r01220 XUSER LDB [,S++] one byte offset\r01225 CLRA\r01230 ADDD <UP\r01240 PSHU D\r01250 NEXT\r01260 *\r01300 * push address of LINEAR array entry\r01305 * call by JSR\r01310 X1ARR PULS X\r01320 LDD ,U index\r01330 SUBD ,X base\r01340 CMPD 2,X width\r01350 BLO X1ARRS\r01360 LDD #$0C\r01365 PSHU D\r01370 JMP ERROR\r01380 X1ARRS PSHS A\r01390 LDA 4,X size\r01400 MUL\r01410 STD ,U\r01420 PULS A ms byte\r01430 LDB 4,X\r01440 MUL\r01450 TFR B,A\r01460 ADDA ,U\r01470 LDB 1,U\r01480 LEAX 5,X past header\r01490 LEAX D,X\r01500 STX ,U\r01510 NEXT\r01520 * LINEAR array header format:\r01530 * FDB BASE (lowest index)\r01540 * FDB WIDTH (# of elements)\r01550 * FCB SIZE (< 256 bytes / element)\r01560 * RMB SIZE*WIDTH (data)\r01700 *\r01710 * push content of USER variable\r01715 * call by JSR\r01720 XUCON LDX <UP\r01722 LDB [,S++] one byte offset\r01725 CLRA\r01730 LDD D,X\r01740 PSHU D\r01750 NEXT\r01800 *\r01802 * store VOCABULARY pointer in root\r01805 * call by JSR\r01810 XVOC LDX <UP\r01820 PULS D\r01830 STD UROOT,X\r01840 NEXT\r01850 *\r01860 * indirect into icode list following\r01870 * DOES> in defining definition\r01880 * call by JSR\r01890 XDOES LDX ,S pfa\r01900 LDD ,X++ list ptr\r01920 PSHU X parameters\r01930 STY ,S nest old\r01940 TFR D,Y interpret\r01950 NEXT\r01960 *\r02000 * push double constant\r02010 * call by JSR\r02020 XDCON PULS X\r02030 LDD ,X++\r02040 LDX ,X++\r02050 PSHU D,X\r02060 NEXT\r02070 *\r40000 ORG DPAGE+256 if code fits\r40010 SETDP 0 not yet valid\r
\ No newline at end of file