OSDN Git Service

Approximating the state it was in when I mothballed in around 1993.
[bif-6809/bif-6809.git] / edtasm_v / BIF.ASM
1 00010 * The Kernel of BIF: A Dialect of FORTH\r00015 * with a Binary Tree Dictionary\r00020 * Copyright   1989 by Joel Matthew Rees\r00025 *\r00030 * BIF is architecturally derived from\r00035 * the public domain fig-FORTH model.\r00040 * \r00050 *       TITLE BIF kernel 16 Feb 89\r00070        OPT MEX\r00080   INCLUDE BIFU.INC\r00090  ORG $1200       DEBIF: $3F00\r00100      INCLUDE BIF.M\r00110     INCLUDE BIFDP.ASM\r00110         INCLUDE BIFST.ASM\r00120         SETDP VDP COLD loads DP\r01000 *\r01001   FCC '@' name\r01002      FCB 1 name length, usage (NFA)\r01003    FCB MFORE type/allocation MODES\r01004   FDB WARM-CFAOFF previous link in allocation\r01005       FDB BIF+2 owning vocabulary\r01006       FDB EQ-CFAOFF left link in tree\r01007   FDB AND-CFAOFF right link in tree\r01010 FETCH   LDD [,U] from [tos] to stack\r01011      STD ,U\r01012    NEXT\r01013 *\r01014      FCC '!'\r01015   FCB 1\r01016     FCB MFORE\r01017         FDB FETCH-CFAOFF\r01030  FDB BIF+2\r01040         FDB NUBLK-CFAOFF\r01050  FDB STOCSP-CFAOFF\r01060 STORE   LDD 2,U from stack to [top]\r01070       STD [,U]\r01080  LEAU 4,U\r01090  NEXT\r01095 *\r01100      FCC 'LIT'\r01110         FCB MCOMP.OR.3\r01120    FCB MFORE\r01130         FDB STORE-CFAOFF\r01140  FDB BIF+2\r01150         FDB 0 * LIST-CFAOFF\r01160       FDB 0\r01170 LIT LDD ,Y++ push literal from code\r01180   PSHU D\r01190    NEXT\r01200 *\r01210      FCC 'DLIT'\r01220        FCB MCOMP.OR.4\r01230    FCB MFORE\r01240         FDB LIT-CFAOFF\r01250    FDB BIF+2\r01260         FDB 0\r01270     FDB 0\r01280 * push double literal from code\r01290 DLIT  LDD ,Y++\r01300  LDX ,Y++\r01310  PSHU D,X\r01320  NEXT\r01330 *\r01340      FCC 'EXECUTE'\r01350     FCB MCOMP.OR.7\r01360    FCB MFORE\r01370         FDB DLIT-CFAOFF\r01380   FDB BIF+2\r01390         FDB 0\r01400     FDB 0\r01410 * EXECUTE cfa on stack\r01420 EXEC   LDX ,U++\r01430  BEQ *+4\r01440   JMP ,X\r01450    LDD #9\r01460    PSHU D\r01462    JMP ERROR\r01464 *\r01466         FCC '1BRANCH'\r01468     FCB MCOMP.OR.7\r01470    FCB MFORE\r01472         FDB EXEC-CFAOFF\r01474   FDB BIF+2\r01476         FDB 0\r01478     FDB 0\r01480 TBR LDD ,U++\r01482  BNE BRANCH\r01484        LEAY 2,Y\r01486  NEXT\r01488 *\r01490      FCC 'BRANCH'\r01500      FCB MCOMP.OR.6\r01510    FCB MFORE\r01520         FDB TBR-CFAOFF\r01530    FDB BIF+2\r01540         FDB 0\r01550     FDB 0\r01560 BRANCH      LDD ,Y++\r01570  LEAY D,Y\r01580  NEXT\r01590 *\r01600      FCC '0BRANCH'\r01610     FCB MCOMP.OR.7\r01620    FCB MFORE\r01630         FDB BRANCH-CFAOFF\r01640         FDB BIF+2\r01650         FDB 0\r01660     FDB 0\r01670 ZBR LDD ,U++\r01680  BEQ BRANCH\r01690        LEAY 2,Y\r01700  NEXT\r01710 *\r01720      FCC '(LOOP)'\r01730      FCB MCOMP.OR.6\r01740    FCB MFORE\r01750         FDB ZBR-CFAOFF\r01760    FDB BIF+2\r01770         FDB 0\r01780     FDB 0\r01790 XLOOP       LDD #1\r01800    ADDD ,S\r01810   STD ,S\r01820    SUBD 2,S\r01830  BLT BRANCH\r01840 XLOOPN LEAY 2,Y\r01850  LEAS 4,S\r01860  NEXT\r01870 *\r01880      FCC '(+LOOP)'\r01890     FCB MCOMP.OR.7\r01900    FCB MFORE\r01910         FDB XLOOP-CFAOFF\r01920  FDB BIF+2\r01930         FDB 0\r01940     FDB 0\r01950 XPLOOP      LDD ,U++ inc val\r01960  BPL XLOOP+3\r01970       ADDD ,S\r01980   STD ,S\r01990    SUBD 2,S\r02000  BGT BRANCH\r02010        BRA XLOOPN\r02020 *\r02030        FCC '(DO)'\r02040        FCB 4\r02050     FCB MFORE\r02060         FDB XPLOOP-CFAOFF\r02070         FDB BIF+2\r02080         FDB 0\r02090     FDB 0\r02100 XDO PULU D,X\r02110  PSHS D,X\r02120  NEXT\r02130 *\r02140      FCC 'I'\r02150   FCB 1\r02160     FCB MFORE\r02170         FDB XDO-CFAOFF\r02180    FDB BIF+2\r02190         FDB HLD-CFAOFF\r02200    FDB IDDOT-CFAOFF\r02210 I        LDD ,S\r02220    PSHU D\r02222    NEXT\r02224 *\r02226      FCC 'J'\r02228   FCB 1\r02230     FCB MFORE\r02232         FDB I-CFAOFF\r02234      FDB BIF+2\r02236         FDB IPCOM-CFAOFF\r02238  FDB 0\r02240 J   LDD 4,S\r02242   PSHU D\r02244    NEXT\r02246 *\r02250      FCC 'DIGIT'\r02260       FCB 5\r02270     FCB MFORE\r02280         FDB J-CFAOFF\r02290      FDB BIF+2\r02300         FDB DEC-CFAOFF\r02310    FDB DLITER-CFAOFF\r02320 DIGIT   LDB 3,U\r02330   CMPB #'9\r02340  BLS DIGITX+4\r02350      CMPB #'A\r02360  BLO DIGITN\r02370        CMPB #'Z\r02380  BLS DIGITX+2\r02390      CMPB #'a\r02400  BLO DIGITN\r02410        CMPB #'z\r02420  BHI DIGITN\r02430 DIGITX SUBB #'a-'Z-1\r02440     SUBB #'A-'9-1\r02450     SUBB #'0\r02460  CMPB 1,U\r02470  BHS DIGITN\r02480        CLRA\r02490      STD 2,U\r02500   LDD #-1\r02510 DIGITL    STD ,U\r02520    NEXT\r02530 DIGITN       LEAU 2,U\r02540  LDD #0\r02550    BRA DIGITL\r02560 *\r02570        FCC '(FIND)'\r02580      FCB 6\r02590     FCB MFORE\r02600         FDB DIGIT-CFAOFF\r02610  FDB BIF+2\r02620         FDB IABORT-CFAOFF\r02630         FDB XMACH-CFAOFF\r02640 * search vocabulary adr2 for (adr1)\r02650 PFIND  LDD ,U valid?\r02660     BEQ PFINDX\r02670 PFINDL DOCOL\r02680     FDB PREF\r02690  FDB XMACH\r02700         LEAU 2,U\r02710  LDX [,U] NULL link?\r02720       BEQ PFINDN\r02730        LDB ,X\r02740    ANDB #MHID smudged?\r02750       BEQ PFINDY\r02760        LEAX RTOFF,X deeper\r02770       STX ,U\r02780    BRA PFINDL\r02790 PFINDY LDX #-1\r02800 PFINDN    LDD ,U\r02810    STX ,U\r02820 PFINDX     STD 2,U\r02830   NEXT\r02990 *\r03000      FCC 'ENCLOSE'\r03010     FCB 7\r03020     FCB MFORE\r03030         FDB PFIND-CFAOFF\r03040  FDB BIF+2\r03050         FDB EMTBUF-CFAOFF\r03060         FDB 0\r03070 * adr1 c --- adr2 len\r03080 ENCLOS  LDX 2,U\r03100 ENCLLD    LDB ,X+ delimiter\r03110         BEQ ENCL0\r03120         CMPB 1,U\r03130  BEQ ENCLLD\r03133 ENCL0  LEAX -1,X\r03140         STX 2,U\r03150 ENCLLW    LDB ,X+ scan word\r03160         BEQ ENCLCA\r03170        CMPB 1,U\r03180  BNE ENCLLW\r03190 ENCLCA TFR X,D length\r03195    SUBD #1\r03200   SUBD 2,U\r03220  STD ,U\r03230    NEXT\r03240 *\r03250      FCC 'LITERAL'\r03260     FCB MIMM.OR.7\r03270     FCB MFORE\r03280         FDB ENCLOS-CFAOFF\r03290         FDB BIF+2\r03300         FDB LIT-CFAOFF\r03310    FDB LOAD-CFAOFF\r03320 * compile a literal\r03330 LITER   BSR LITERS\r03340        LDD #LIT\r03350 LITERB   STD ,Y++\r03360  PULU D\r03370    STD ,Y++\r03380  STY UDP,X\r03390         PULS Y\r03400    JMP HERERR\r03405 *\r03410 LITERS LDX <UP\r03412   LDB USTATE+1,X\r03414    ANDB #SCOMP\r03416       PULS D no CC\r03418      BNE *+4 compiling?\r03420        NEXT no\r03422   PSHS Y\r03424    LDY UDP,X\r03426         EXG D,PC return\r03430 *\r03435   FCC 'DLITERAL'\r03440    FCB MIMM.OR.8\r03450     FCB MFORE\r03460         FDB LITER-CFAOFF\r03470  FDB BIF+2\r03480         FDB DLIT-CFAOFF\r03490   FDB DMINUS-CFAOFF\r03500 * compile a 32 bit constant\r03510 DLITER        BSR LITERS\r03540        LDD #DLIT\r03550         STD ,Y++\r03560  PULU D\r03570    BRA LITERB\r03630 *\r08210        INCLUDE BIFB.ASM\r08220  INCLUDE BIF1.ASM\r08230  INCLUDE BIF1B.ASM\r08240         INCLUDE BIF2.ASM\r08250  INCLUDE BIF2B.ASM\r08260         INCLUDE BIF3.ASM\r08270  INCLUDE BIF3B.ASM\r08280         INCLUDE BIF4.ASM\r08285  INCLUDE BIF4B.ASM\r08290         INCLUDE BIF5.ASM\r08295  INCLUDE BIF5B.ASM\r08300         INCLUDE BIF6.ASM\r08310  INCLUDE BIF6B.ASM\r08320         INCLUDE BIF7.ASM\r08330  INCLUDE BIF7B.ASM\r09000         END\r