• R/O
  • HTTP
  • SSH
  • HTTPS

bif-6809: コミット

ソースコード及び仕様書など
Source and documentation


コミットメタ情報

リビジョン515ad2030616fe937158da055ee5d6fdd54a59b2 (tree)
日時2019-04-25 18:19:38
作者Joel Matthew Rees <joel.rees@gmai...>
コミッターJoel Matthew Rees

ログメッセージ

32col.c in junkbox has become bif-img.c, a tool for exhanging contents of disks with text files.

変更サマリ

差分

--- /dev/null
+++ b/bif-img.c
@@ -0,0 +1 @@
1+/* Tool for working with BIF-6809 images. // Written by Joel Matthew Rees, Amagasaki, Japan, April 2019, // Parts adapted from the author's 32col.c, written 1999. // Copyright 1999, 2019, Joel Matthew Rees. // Permission granted in advance for all uses // with the condition that this copyright and permission notice are retained. // // BIF-6809 project page: https://osdn.net/projects/bif-6809/ */ #include <stdio.h> #include <stdlib.h> /* for EXIT_SUCCESS */ #include <string.h> #include <ctype.h> #define ScreenWidth 32 #define ScreenHeight 32 #define BufferPlay 3 /* room for CR/LF and NUL */ #define BufferWidth ( ScreenWidth + BufferPlay ) #define TO_SCREEN 1 const char kTo_ScreenStr[] = "--to-screens"; #define TO_EOLN_TEXT 2 const char kTo_EOLN_textStr[] = "--to-eoln-text"; void toEOLNtext( FILE * input, FILE * output /*, int linecountflag */ ) { char buffer[ ScreenHeight ][ BufferWidth ]; while ( !feof( input ) ) { int lineCount; for ( lineCount = 0; lineCount < ScreenHeight && !feof( input ); ++lineCount ) { int length = fread( buffer[ lineCount ], sizeof (char), ScreenWidth, input ); while ( --length >= 0 && ( isspace( buffer[ lineCount ][ length ] ) || !isprint( buffer[ lineCount ][ length ] ) ) ) /* "empty" loop */; buffer[ lineCount ][ ++length ] = '\0'; } if ( lineCount > 1 || ( lineCount == 1 && buffer[ 0 ][ 0 ] != '\0' ) ) { int line = 0; while ( --lineCount > 0 && buffer[ lineCount ][ 0 ] == '\0' ) /* "empty" loop */; for ( line = 0; line <= lineCount; ++line ) /* check end conditions again. */ { fputs( buffer[ line ], output ); fputc( '\n', output ); } fputc( '\f', output ); } } } #define FILE_START 0x200 /* beyond char range. */ #define LINE_START 0x400 /* beyond char range. */ void toScreens( FILE * input, FILE * output /*, int linecountflag */ ) { char buffer[ ScreenHeight ][ BufferWidth ]; int eolFlag = FILE_START; while ( !feof( input ) ) { int lineCount; for ( lineCount = 0; lineCount < ScreenHeight; ++lineCount ) { int length = 0; char * line = buffer[ lineCount ]; int ch = LINE_START; while ( ( length < ScreenWidth ) && !feof( input ) ) { ch = fgetc( input ); if ( ( length == 0 ) && ( ( ( ch == '\r' ) && ( eolFlag == '\n' ) ) || ( ( ch == '\n' ) && ( eolFlag == '\r' ) ) ) ) { ch = fgetc( input ); } eolFlag = ch; if ( ( ch == '\n' ) || ( ch == '\r' ) || feof( input ) ) { break; /* The habit is to set a NUL, but not for SCREENs. */ } line[ length++ ] = ch; /* dbg * / putchar( ch ); */ } /* dbg * / printf( "||end:%d:", length ); */ while ( length < ScreenWidth ) { line[ length++ ] = ' '; /* dbg * / putchar( '*' );*/ } /* dbg * / printf( "||:%d:%d\n", length, lineCount ); */ } /* dbg * / printf( "<<screen:%d:>>\n", lineCount ); */ if ( lineCount > 0 ) { int line = 0; for ( line = 0; line < lineCount; ++line ) { fwrite( buffer[ line ], sizeof (char), ScreenWidth, output ); } } } } int main(int argc, char * argv[] ) { FILE * input = stdin; FILE * output = stdout; int direction = 0; int blocksize = 1024; int offset = 0; int count = 0; if ( argc > 3 ) { if ( strcmp( argv[ 1 ], kTo_ScreenStr ) == 0 ) { direction = TO_SCREEN; } else if ( strcmp( argv[ 1 ], kTo_EOLN_textStr ) == 0 ) { direction = TO_EOLN_TEXT; } if ( direction != 0 ) { if ( strcmp( argv[ 2 ], "--" ) != 0 ) { input = fopen( argv[ 2 ], "rb" ); } if ( input == NULL ) { printf( "Error opening file <%s> for input.\n", argv[ 2 ] ); direction = -1; } if ( strcmp( argv[ 3 ], "--" ) != 0 ) { output = fopen( argv[ 3 ], "wb" ); } if ( output == NULL ) { printf( "Error opening file <%s> for output.\n", argv[ 3 ] ); fclose( input ); direction = -1; } } } if ( direction < 0 ) { printf( "*** %s quitting. ***\n", argv[ 0 ] ); return EXIT_FAILURE; } else if ( direction == 0 ) { puts( "usage:" ); printf( "\t%s %s <infile> <outfile>\n", argv[ 0 ], kTo_ScreenStr ); printf( "\t%s %s <infile> <outfile> [ [ -size=<block-size> ] -off=<offset> [ -count=<count> ] ]\n", argv[ 0 ], kTo_EOLN_textStr ); printf( "** Default block size is 1024, compatible with Forth SCREENs.\n" ); printf( "** Default count is length of input file.\n" ); printf( "** 0xhexadecimal and 0octal permitted for size, etc.\n" ); printf( "** Replace <file> with -- for stdfiles in pipes\n" ); /* printf( "\t%s --to-image <filename> <imagename> <offset>\n", argv[ 0 ] ); */ return EXIT_SUCCESS; } switch ( direction ) { case TO_SCREEN: toScreens( input, output ); break; case TO_EOLN_TEXT: toEOLNtext( input, output ); break; } return EXIT_SUCCESS; }
\ No newline at end of file
--- a/commands.txt
+++ b/commands.txt
@@ -29,9 +29,18 @@ tr /\\r/ /\\n/ < BIFU.INC > bifu.inc
2929
3030 tr /\\n/ /\\r/ < bifu.inc > BIFU.INC
3131
32+cat BIFU.INC | tr '\r' '\n'
33+
3234 imgtool del coco_jvc_rsdos bifsource.dsk BIFU.INC
3335 imgtool put coco_jvc_rsdos bifsource.dsk BIFU.INC BIFU.INC --ftype=assembler --ascii=ascii
3436
37+imgtool get coco_jvc_rsdos ../../foreign6809/play/play.dsk PRIMES.BAS --filter=ascii
38+# Put still gives FM format error when BASIC tries to load:
39+# imgtool put coco_jvc_rsdos ../../foreign6809/play/play.dsk PRIMESL.BAS PRIMESL.BAS --filter=ascii
40+# NG: imgtool writes, BASIC won't load:
41+# imgtool put coco_jvc_rsdos ../../foreign6809/play/play.dsk PRIMESL.BAS PRIMESL.BAS --filter=ascii --ftype=basic
42+
43+
3544 ../../lwtools-4.14/lwasm/lwasm --list=bif6809.list BIF.ASM
3645
3746 dd if=/dev/zero of=blank.dsk bs=256 count=630
--- /dev/null
+++ b/testsource/bifsource.dsk
@@ -0,0 +1,393 @@
1+00010 * The Kernel of BIF: A Dialect of FORTH 00015 * with a Binary Tree Dictionary 00020 * Copyright 1989 by Joel Matthew Rees 00025 * 00030 * BIF is architecturally derived from 00035 * the public domain fig-FORTH model. 00040 * 00050 * TITLE BIF kernel 16 Feb 89 00070 OPT MEX 00080 INCLUDE BIFU.INC:1 00090 ORG $1200 DEBIF: $3F00 00100 INCLUDE BIF.M:1 00110 INCLUDE BIFDP.ASM:1 00110 INCLUDE BIFST.ASM:1 00120 SETDP VDP COLD loads DP 01000 * 01001 FCC '@' name 01002 FCB 1 name length, usage (NFA) 01003 FCB MFORE type/allocation MODES 01004 FDB WARM-CFAOFF previous link in allocation 01005 FDB BIF+2 owning vocabulary 01006 FDB EQ-CFAOFF left link in tree 01007 FDB AND-CFAOFF right link in tree 01010 FETCH LDD [,U] from [tos] to stack 01011 STD ,U 01012 NEXT 01013 * 01014 FCC '!' 01015 FCB 1 01016 FCB MFORE 01017 FDB FETCH-CFAOFF 01030 FDB BIF+2 01040 FDB NUBLK-CFAOFF 01050 FDB STOCSP-CFAOFF 01060 STORE LDD 2,U from stack to [top] 01070 STD [,U] 01080 LEAU 4,U 01090 NEXT 01095 * 01100 FCC 'LIT' 01110 FCB MCOMP.OR.3 01120 FCB MFORE 01130 FDB STORE-CFAOFF 01140 FDB BIF+2 01150 FDB 0 * LIST-CFAOFF 01160 FDB 0 01170 LIT LDD ,Y++ push literal from code 01180 PSHU D 01190 NEXT 01200 * 01210 FCC 'DLIT' 01220 FCB MCOMP.OR.4 01230 FCB MFORE 01240 FDB LIT-CFAOFF 01250 FDB BIF+2 01260 FDB 0 01270 FDB 0 01280 * push double literal from code 01290 DLIT LDD ,Y++ 01300 LDX ,Y++ 01310 PSHU D,X 01320 NEXT 01330 * 01340 FCC 'EXECUTE' 01350 FCB MCOMP.OR.7 01360 FCB MFORE 01370 FDB DLIT-CFAOFF 01380 FDB BIF+2 01390 FDB 0 01400 FDB 0 01410 * EXECUTE cfa on stack 01420 EXEC LDX ,U++ 01430 BEQ *+4 01440 JMP ,X 01450 LDD #9 01460 PSHU D 01462 JMP ERROR 01464 * 01466 FCC '1BRANCH' 01468 FCB MCOMP.OR.7 01470 FCB MFORE 01472 FDB EXEC-CFAOFF 01474 FDB BIF+2 01476 FDB 0 01478 FDB 0 01480 TBR LDD ,U++ 01482 BNE BRANCH 01484 LEAY 2,Y 01486 NEXT 01488 * 01490 FCC 'BRANCH' 01500 FCB MCOMP.OR.6 01510 FCB MFORE 01520 FDB TBR-CFAOFF 01530 FDB BIF+2 01540 FDB 0 01550 FDB 0 01560 BRANCH LDD ,Y++ 01570 LEAY D,Y 01580 NEXT 01590 * 01600 FCC '0BRANCH' 01610 FCB MCOMP.OR.7 01620 FCB MFORE 01630 FDB BRANCH-CFAOFF 01640 FDB BIF+2 01650 FDB 0 01660 FDB 0 01670 ZBR LDD ,U++ 01680 BEQ BRANCH 01690 LEAY 2,Y 01700 NEXT 01710 * 01720 FCC '(LOOP)' 01730 FCB MCOMP.OR.6 01740 FCB MFORE 01750 FDB ZBR-CFAOFF 01760 FDB BIF+2 01770 FDB 0 01780 FDB 0 01790 XLOOP LDD #1 01800 ADDD ,S 01810 STD ,S 01820 SUBD 2,S 01830 BLT BRANCH 01840 XLOOPN LEAY 2,Y 01850 LEAS 4,S 01860 NEXT 01870 * 01880 FCC '(+LOOP)' 01890 FCB MCOMP.OR.7 01900 FCB MFORE 01910 FDB XLOOP-CFAOFF 01920 FDB BIF+2 01930 FDB 0 01940 FDB 0 01950 XPLOOP LDD ,U++ inc val 01960 BPL XLOOP+3 01970 ADDD ,S 01980 STD ,S 01990 SUBD 2,S 02000 BGT BRANCH 02010 BRA XLOOPN 02020 * 02030 FCC '(DO)' 02040 FCB 4 02050 FCB MFORE 02060 FDB XPLOOP-CFAOFF 02070 FDB BIF+2 02080 FDB 0 02090 FDB 0 02100 XDO PULU D,X 02110 PSHS D,X 02120 NEXT 02130 * 02140 FCC 'I' 02150 FCB 1 02160 FCB MFORE 02170 FDB XDO-CFAOFF 02180 FDB BIF+2 02190 FDB HLD-CFAOFF 02200 FDB IDDOT-CFAOFF 02210 I LDD ,S 02220 PSHU D 02222 NEXT 02224 * 02226 FCC 'J' 02228 FCB 1 02230 FCB MFORE 02232 FDB I-CFAOFF 02234 FDB BIF+2 02236 FDB IPCOM-CFAOFF 02238 FDB 0 02240 J LDD 4,S 02242 PSHU D 02244 NEXT 02246 * 02250 FCC 'DIGIT' 02260 FCB 5 02270 FCB MFORE 02280 FDB J-CFAOFF 02290 FDB BIF+2 02300 FDB DEC-CFAOFF 02310 FDB DLITER-CFAOFF 02320 DIGIT LDB 3,U 02330 CMPB #'9 02340 BLS DIGITX+4 02350 CMPB #'A 02360 BLO DIGITN 02370 CMPB #'Z 02380 BLS DIGITX+2 02390 CMPB #'a 02400 BLO DIGITN 02410 CMPB #'z 02420 BHI DIGITN 02430 DIGITX SUBB #'a-'Z-1 02440 SUBB #'A-'9-1 02450 SUBB #'0 02460 CMPB 1,U 02470 BHS DIGITN 02480 CLRA 02490 STD 2,U 02500 LDD #-1 02510 DIGITL STD ,U 02520 NEXT 02530 DIGITN LEAU 2,U 02540 LDD #0 02550 BRA DIGITL 02560 * 02570 FCC '(FIND)' 02580 FCB 6 02590 FCB MFORE 02600 FDB DIGIT-CFAOFF 02610 FDB BIF+2 02620 FDB IABORT-CFAOFF 02630 FDB XMACH-CFAOFF 02640 * search vocabulary adr2 for (adr1) 02650 PFIND LDD ,U valid? 02660 BEQ PFINDX 02670 PFINDL DOCOL 02680 FDB PREF 02690 FDB XMACH 02700 LEAU 2,U 02710 LDX [,U] NULL link? 02720 BEQ PFINDN 02730 LDB ,X 02740 ANDB #MHID smudged? 02750 BEQ PFINDY 02760 LEAX RTOFF,X deeper 02770 STX ,U 02780 BRA PFINDL 02790 PFINDY LDX #-1 02800 PFINDN LDD ,U 02810 STX ,U 02820 PFINDX STD 2,U 02830 NEXT 02990 * 03000 FCC 'ENCLOSE' 03010 FCB 7 03020 FCB MFORE 03030 FDB PFIND-CFAOFF 03040 FDB BIF+2 03050 FDB EMTBUF-CFAOFF 03060 FDB 0 03070 * adr1 c --- adr2 len 03080 ENCLOS LDX 2,U 03100 ENCLLD LDB ,X+ delimiter 03110 BEQ ENCL0 03120 CMPB 1,U 03130 BEQ ENCLLD 03133 ENCL0 LEAX -1,X 03140 STX 2,U 03150 ENCLLW LDB ,X+ scan word 03160 BEQ ENCLCA 03170 CMPB 1,U 03180 BNE ENCLLW 03190 ENCLCA TFR X,D length 03195 SUBD #1 03200 SUBD 2,U 03220 STD ,U 03230 NEXT 03240 * 03250 FCC 'LITERAL' 03260 FCB MIMM.OR.7 03270 FCB MFORE 03280 FDB ENCLOS-CFAOFF 03290 FDB BIF+2 03300 FDB LIT-CFAOFF 03310 FDB LOAD-CFAOFF 03320 * compile a literal 03330 LITER BSR LITERS 03340 LDD #LIT 03350 LITERB STD ,Y++ 03360 PULU D 03370 STD ,Y++ 03380 STY UDP,X 03390 PULS Y 03400 JMP HERERR 03405 * 03410 LITERS LDX <UP 03412 LDB USTATE+1,X 03414 ANDB #SCOMP 03416 PULS D no CC 03418 BNE *+4 compiling? 03420 NEXT no 03422 PSHS Y 03424 LDY UDP,X 03426 EXG D,PC return 03430 * 03435 FCC 'DLITERAL' 03440 FCB MIMM.OR.8 03450 FCB MFORE 03460 FDB LITER-CFAOFF 03470 FDB BIF+2 03480 FDB DLIT-CFAOFF 03490 FDB DMINUS-CFAOFF 03500 * compile a 32 bit constant 03510 DLITER BSR LITERS 03540 LDD #DLIT 03550 STD ,Y++ 03560 PULU D 03570 BRA LITERB 03630 * 08210 INCLUDE BIFB.ASM:1 08220 INCLUDE BIF1.ASM:1 08230 INCLUDE BIF1B.ASM:1 08240 INCLUDE BIF2.ASM:1 08250 INCLUDE BIF2B.ASM:1 08260 INCLUDE BIF3.ASM:1 08270 INCLUDE BIF3B.ASM:1 08280 INCLUDE BIF4.ASM:1 08285 INCLUDE BIF4B.ASM:1 08290 INCLUDE BIF5.ASM:1 08295 INCLUDE BIF5B.ASM:1 08300 INCLUDE BIF6.ASM:1 08310 INCLUDE BIF6B.ASM:1 08320 INCLUDE BIF7.ASM:1 08330 INCLUDE BIF7B.ASM:1 09000 END ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * USER variable definitions for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00100 * INCLUDE THIS BEFORE SETTING DPR 00110 * ORG used here for offsets only 00120 ORG 0 00130 US0 RMB 2 base of data stack (6809 U) 00140 UR0 RMB 2 base of control stack (6809 S) 00150 UTIB RMB 2 terminal buffer 00160 RMB 2 width is not used 00170 UWARN RMB 2 disk on line? 00180 UFENCE RMB 2 for FORGET 00190 UDP RMB 2 first available byte in dictionary 00200 UROOT RMB 2 current dictionary root pointer 00210 UDROOT RMB 2 defining dictionary root pointer 00220 UCURR RMB 2 NFA of last definition 00230 UPAD RMB 2 text, numeric scratch buffers 00240 UWP RMB 2 WORD buffer pointer 00250 UCOLUM RMB 2 columns per lineon terminal 00260 UFIRST RMB 2 byte of buffers 00270 ULIMIT RMB 2 of buffer ram 00280 UBASE RMB 2 of numeric conversion 00290 UCSP RMB 2 stack pointer check 00300 UHLD RMB 2 character mark in pad 00310 UUSE RMB 2 Least Recently Used buffer 00320 UPREV RMB 2 Most Recently Used buffer 00330 UBS RMB 2 BackSpace 00340 UIN RMB 2 input buffer offset 00350 UOUT RMB 2 output buffer offset (cursor) 00360 UBLK RMB 2 active disc block 00370 UEBLK RMB 2 active edit block 00380 USCR RMB 2 active disc screen 00390 URNUM RMB 2 editing offset (cursor) 00400 UOFFS RMB 2 to active drive 00410 USTATE RMB 2 of compiler 00420 UDPL RMB 2 output Decimal Point Location 00430 UFLD RMB 2 output field width 00440 UVMK RMB 2 stack mark and function for VISIT 00450 UFORE RMB 2 FOREWARD reference block link 00460 UDPR RMB 2 Direct Page Emulator for Assembler 00990 RMB 16 8 spares 01000 UEND EQU * es 01000 UEND EQU * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * EQUates and MACRO definitions for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 01000 * 01010 * JMP to next icode word 01020 NEXT MACRO 01030 JMP [,Y++] 01040 ENDM 01050 * 01053 * offset from name field to mode field 01056 MFAOFF EQU 1 01057 * length of symbols, must be 2^n for mask 01058 NLMASK EQU $1F 01060 * offset to previous allocation link 01070 LFAOFF EQU MFAOFF+1 01080 * offset to owning VOCABULARY (genesis) link 01090 GFAOFF EQU LFAOFF+2 01100 LFTOFF EQU GFAOFF+2 left child link 01110 RTOFF EQU GFAOFF+4 right child link 01120 * offset to code field 01130 CFAOFF EQU GFAOFF+6 01140 * offset to parameter field (past Direct Page jump) 01150 PFAOFF EQU CFAOFF+2 01160 * All links are relative to the name field (NFA) 01170 * Use PFAOFF (or PFA) with ;CODE! 01320 * usage and name length share a byte (name length < 32). 01330 * foreward blocks marked in the mode byte 01340 * usage and mode bits 01350 MFORE EQU $80 part of FORWARD reference block (in mode byte -- MFA) 01360 MCOMP EQU $80 compile only (in length byte -- NFA) 01370 MIMM EQU $40 precedence is IMMEDIATE execution (in length byte -- NFA) 01380 MHID EQU $20 SMUDGEd definition (in length byte -- NFA) 01390 * 01400 * initiate an icode list 01410 DOCOL MACRO 01420 JSR <XCOL 01430 ENDM 01440 * 01450 DOVAR MACRO 01460 JSR <XVAR 01470 ENDM 01480 * 01490 DOCON MACRO 01500 JSR <XCON 01510 ENDM 01520 * 01530 DOUSER MACRO 01540 JSR <XUSER 01550 ENDM 01560 * 01570 DO1ARR MACRO 01580 JSR <X1ARR 01590 ENDM 01600 * 01610 DOUCON MACRO 01620 JSR <XUCON 01630 ENDM 01640 * 01650 DOVOC MACRO 01660 JSR <XVOC 01670 ENDM 01680 * 02000 * add D to top of stack 02010 ADDTOP MACRO 02020 ADDD ,U 02030 STD ,U 02040 JMP [,Y++] 02050 ENDM 02060 * 020 ADDD ,U 02030 STD ,U 02040 JMP [,Y++] 02050 ENDM 02060 * } ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00020 * Direct Page definitions for BIF 00030 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00060 * This file is dependent on BIF/M definitions 00100 DPAGE EQU * 00105 VDP EQU DPAGE/256 00110 * ORG needs to leave space for this code 00120 SETDP VDP 00130 * COLD needs to load VDP into DP register 00500 * 00510 * Direct Page variables 00600 UP RMB 2 00610 RMB 8 spares 01000 * 01010 * nest into icode list 01020 * call by JSR 01030 XCOL LDX ,S list ptr 01040 STY ,S nest old 01050 TFR X,Y interpret 01060 NEXT 01070 * 01080 * PUSH FOLLOWING WORD 01090 * call by JSR for CONSTANT 01100 XCON LDD [,S++] 01110 PSHU D 01120 NEXT 01130 * 01140 * push following address 01150 * call by JSR for VARIABLE address 01160 XVAR PULS D 01170 PSHU D 01180 NEXT 01190 * (same code as R>, but in DP) 01200 * 01210 * push address of USER variable 01215 * call by JSR 01220 XUSER LDB [,S++] one byte offset 01225 CLRA 01230 ADDD <UP 01240 PSHU D 01250 NEXT 01260 * 01300 * push address of LINEAR array entry 01305 * call by JSR 01310 X1ARR PULS X 01320 LDD ,U index 01330 SUBD ,X base 01340 CMPD 2,X width 01350 BLO X1ARRS 01360 LDD #$0C 01365 PSHU D 01370 JMP ERROR 01380 X1ARRS PSHS A 01390 LDA 4,X size 01400 MUL 01410 STD ,U 01420 PULS A ms byte 01430 LDB 4,X 01440 MUL 01450 TFR B,A 01460 ADDA ,U 01470 LDB 1,U 01480 LEAX 5,X past header 01490 LEAX D,X 01500 STX ,U 01510 NEXT 01520 * LINEAR array header format: 01530 * FDB BASE (lowest index) 01540 * FDB WIDTH (# of elements) 01550 * FCB SIZE (< 256 bytes / element) 01560 * RMB SIZE*WIDTH (data) 01700 * 01710 * push content of USER variable 01715 * call by JSR 01720 XUCON LDX <UP 01722 LDB [,S++] one byte offset 01725 CLRA 01730 LDD D,X 01740 PSHU D 01750 NEXT 01800 * 01802 * store VOCABULARY pointer in root 01805 * call by JSR 01810 XVOC LDX <UP 01820 PULS D 01830 STD UROOT,X 01840 NEXT 01850 * 01860 * indirect into icode list following 01870 * DOES> in defining definition 01880 * call by JSR 01890 XDOES LDX ,S pfa 01900 LDD ,X++ list ptr 01920 PSHU X parameters 01930 STY ,S nest old 01940 TFR D,Y interpret 01950 NEXT 01960 * 02000 * push double constant 02010 * call by JSR 02020 XDCON PULS X 02030 LDD ,X++ 02040 LDX ,X++ 02050 PSHU D,X 02060 NEXT 02070 * 40000 ORG DPAGE+256 if code fits 40010 SETDP 0 not yet valid 0010 SETDP 0 not yet valid ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00000010 * Start up routines for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00100 * 00105 ILIM EQU $8000 memory 00110 IBUFF EQU ILIM-BCT*(BWID+4) 00120 IPAD EQU IBUFF-TWID max 00130 IHASH EQU IPAD-34 00140 IWPAD EQU IHASH-NLMASK-2 00150 ITIB EQU IWPAD-TWID 00160 IUSER EQU ITIB-UEND 00170 IRP0 EQU IUSER-2 00180 ISP0 EQU IRP0-258 00190 * dictionary below here 00400 * 00410 ORIG EQU * initials for task 0, offsets 00420 NOP 0 00430 JMP COLD 1 00440 NOP 4 00450 JMP WARM 5 00460 FDB $6809 cpu 8 00470 FDB 0 rev $0A 00480 FDB FORGET-CFAOFF CURRENT for COLD $0C 00490 FDB 8 backspace $0E 00500 FDB IUSER task 0 user area $10 00510 FDB ISP0 $12 00520 FDB IRP0 $14 00530 FDB ITIB $16 00540 FDB NLMASK not used $18 00550 FDB 1 WARNING $1A 00560 FDB FOLLOW-1 FENCE for COLD $1C 00570 FDB FOLLOW DP for COLD $1E 00580 FDB BIF+2 defs root $20 00590 FDB IPAD $22 00600 FDB IWPAD $24 00610 FDB 32 terminal columns $26 00620 FDB IBUFF $28 00630 FDB ILIM $2A 01000 * 01010 FCC 'COLD' 01020 FCB 4 01030 FCB MFORE 01040 FDB 0 01050 FDB BIF+2 01060 FDB 0 01070 FDB 0 01080 COLD LEAY DOREGS,PCR 01090 EXG PC,Y call 01100 SETDP VDP 01110 CLR $71 for BASIC reset 01120 LDD -4,Y 01130 STD UCURR,X 01140 LDD $0C,Y 01150 STD UFENCE,X 01160 LDD $0E,Y 01170 STD UDP,X 01180 LDD $10,Y 01190 STD UROOT,X 01200 STD UDROOT,X 01210 PSHU D Initial vocabularies 01220 BSR PRUNE must ALL be PRUNEd! 01230 LDD #EDITOR+2 01240 PSHU D 01250 BSR PRUNE 01260 LDD #ASMBLR+2 01270 PSHU D 01280 BSR PRUNE 01290 JMP WARM+5 01300 SETDP 0 01310 * Watch stack (vocabulary) depth! 01315 SETDP VDP 01320 PRUNE PSHS D,X,Y 01330 LDY <UP 01340 LDX ,U++ vocab 01344 BEQ PRUNEX+2 01348 LDD ,X root 01352 BEQ PRUNEX+2 01356 CMPD UFENCE,Y 01360 BLS PRUNSK 01364 LDD #0 01368 STD ,X 01372 BRA PRUNEX+2 01376 PRUNSK TFR D,X 01380 LDD #0 01386 PSHS D mark 01390 PRUNL LDD RTOFF,X 01400 BEQ PRUNLF 01410 CMPD UFENCE,Y 01420 BLS PRUNLF-2 01430 LDD #0 make leaf 01440 STD RTOFF,X 01450 BRA PRUNLF 01460 PSHS D for later 01470 PRUNLF LDD LFTOFF,X 01480 BEQ PRUNEX-2 01490 CMPD UFENCE,Y 01500 BHI PRUNL0 01510 TFR D,X go left 01520 BRA PRUNL 01530 PRUNL0 LDD #0 make leaf 01540 STD LFTOFF,X 01550 LDX ,S++ go right? 01560 PRUNEX BNE PRUNL 01570 PULS D,X,Y,PC 01580 SETDP 0 01590 * 02000 SETDP 0 02010 DOREGS LDS #IRP0 02020 PSHS CC save 02030 ORCC #$50 mask ints 02040 PSHS Y return adr 02050 LDD #DPAGE 02060 TFR A,DP 02070 SETDP VDP 02080 LDY #ORIG+$10 02090 LDX ,Y 02100 STX <UP 02110 LDU #ISP0 02120 LDD #0 02130 STD >0 trap [NULL]s 02140 RTS 02150 SETDP 0 02160 * 02230 FCC 'WARM' 02240 FCB 4 02250 FCB MFORE 02260 FDB COLD-CFAOFF 02270 FDB BIF+2 02280 FDB VLIST-CFAOFF 02290 FDB WARN-CFAOFF 02300 WARM LEAY <DOREGS,PCR 02310 EXG PC,Y call 02320 SETDP VDP 02360 LDD 2,Y 02370 STD US0,X 02380 STD UCSP,X 02390 LDD 4,Y 02400 STD UR0,X 02410 LDD -2,Y 02420 STD UBS,X 02430 LDD 6,Y 02440 STD UTIB,X 02450 LDD $0A,Y 02460 STD UWARN,X 02470 LEAY $10,Y 02480 LDD 2,Y 02490 STD UPAD,X 02500 STD UHLD,X 02510 LDD 4,Y 02520 STD UWP,X 02530 LDD 6,Y 02540 STD UCOLUM,X 02550 LDD 8,Y 02560 STD UFIRST,X 02570 STD UUSE,X 02580 STD UPREV,X 02590 LDD $0A,Y 02600 STD ULIMIT,X 02610 LDD #16 02620 STD UBASE,X 02630 LDD #0 02640 STD [UR0,X] hole 02650 STD [US0,X] hole 02660 LDA #(UEND-UIN) 02670 LEAY UIN,X 02680 WARMLY STB ,Y+ 02690 DECA 02700 BNE WARMLY 02740 PULS CC 02745 ANDCC #$EF enable IRQ (disc) 02750 DOCOL 02760 FDB EMTBUF 02770 FDB ABORT 02780 SETDP 0 02890 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 03640 FCC 'EMIT' 03650 FCB 4 03660 FCB MFORE 03670 FDB DLITER-CFAOFF 03680 FDB BIF+2 03690 FDB DUP-CFAOFF 03700 FDB ENCLOS-CFAOFF 03705 * output using rom CHROUT: redirectable to printer 03710 EMIT PULU D 03720 TFR B,A 03730 CLRB 03740 PSHS Y,U,DP 03750 TFR B,DP 03760 JSR [$A002] 03770 PULS Y,U,DP 03780 NEXT 03790 * 03800 FCC 'KEY' 03810 FCB 3 03820 FCB MFORE 03830 FDB EMIT-CFAOFF 03840 FDB BIF+2 03850 FDB IN-CFAOFF 03860 FDB LIMIT-CFAOFF 03870 * wait for key from POLCAT 03880 KEY PSHS Y,U,DP 03890 CLRB 03895 LDA #$CF a cursor 03900 TFR B,DP 03901 SETDP 0 03904 LDX <$88 locate 03906 LDB ,X save 03908 STA ,X 03910 JSR [$A000] 03920 BEQ *-4 03925 STB ,X restore 03930 KEYR CLRB 03932 CMPA #3 break key 03934 BNE *+3 03936 COMB 03938 EXG A,B 03940 PULS Y,U,DP 03942 SETDP VDP 03945 PSHU D 03950 NEXT 03960 * 03970 FCC '?TERMINAL' 03980 FCB 9 03990 FCB MFORE 04000 FDB KEY-CFAOFF 04010 FDB BIF+2 04020 FDB QSTACK-CFAOFF 04030 FDB 0 04040 * check break key using POLCAT 04050 QTERM PSHS Y,U,DP 04060 CLRB 04070 TFR B,DP 04080 JSR [$A000] 04100 BRA KEYR 04140 * 04150 FCC 'CR' 04160 FCB 2 04170 FCB MFORE 04180 FDB QTERM-CFAOFF 04190 FDB BIF+2 04200 FDB COUNT-CFAOFF 04210 FDB 0 04220 CR LDB #$0D 04230 BRA EMIT+2 04240 * 04250 FCC '(;CODE)' 04260 FCB MCOMP.OR.7 04270 FCB MFORE 04280 FDB CR-CFAOFF 04290 FDB BIF+2 04300 FDB 0 04310 FDB 0 04320 XSCODE LDX <UP 04330 LDX UCURR,X being defined 04340 LEAX CFAOFF,X 04350 LDA AJSR,PCR 04360 STA ,X+ 04370 STY ,X++ code address 04380 PULS Y un-nest 04390 NEXT 04400 * parameters are 3 bytes beyond CFA 04410 AJSR JSR >0 to be compiled 04420 * 04440 DEVNUM EQU $6F coco ROM constant 04450 FCC '>PRT' 04460 FCB 4 04470 FCB MFORE 04480 FDB XSCODE-CFAOFF 04490 FDB BIF+2 04500 FDB 0 04510 FDB 0 04520 TOPRT LDB #-2 04530 STB DEVNUM 04540 NEXT 04550 * 04560 FCC '>VID' 04570 FCB 4 04580 FCB MFORE 04590 FDB TOPRT-CFAOFF 04600 FDB BIF+2 04610 FDB 0 04620 FDB 0 04630 TOVID CLR DEVNUM 04650 NEXT 04660 * 04670 FCC '2*' 04680 FCB 2 04690 FCB MFORE 04700 FDB TOVID-CFAOFF 04710 FDB BIF+2 04720 FDB 0 04730 FDB 0 04740 LSHIFT LSL 1,U 04750 ROL ,U 04760 NEXT 04770 * 04780 FCC '2/' 04790 FCB 2 04800 FCB MFORE 04810 FDB LSHIFT-CFAOFF 04820 FDB BIF+2 04830 FDB SUB2-CFAOFF 04840 FDB THREE-CFAOFF 04850 RSHIFT ASR ,U 04860 ROR 1,U 04870 NEXT 04880 * 04885 FCC '(REFIND)' 04890 FCB 8 04895 FCB MFORE 04900 FDB RSHIFT-CFAOFF 04910 FDB BIF+2 04920 FDB 0 04930 FDB 0 04940 * search vocabulary adr2 for first (adr1) 04950 PREF LDD #PFAOFF vocab flag 04955 PSHS D,Y 04960 LDX ,U root ptr 04965 BEQ PREFN 04970 BRA PREFA 04980 PREFP LDY 2,U hunt for 04990 LDB ,X count 05000 ANDB #NLMASK 05005 BEQ PREF1 05010 TFR B,A 05020 NEGA 05040 LEAX A,X hunt in 05050 PREFS LDA ,Y+ scan 05060 SUBA ,X+ 05070 BNE PREFN 05080 DECB 05090 BNE PREFS 05100 PREF1 LDA ,Y NUL? 05110 BNE PREFN 05120 PREFX PULS D,Y 05140 PSHU D flag 05170 NEXT 05180 PREFN LDX [,U] old NFA 05190 TSTA 05200 BMI *+6 05210 LDB #RTOFF 05220 BRA *+4 05230 LDB #LFTOFF 05233 LEAX B,X 05236 STB 1,S flag 05240 STX ,U 05250 PREFA LDX ,X new NFA 05260 BNE PREFP 05280 BRA PREFX 08200 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 01000 FCC 'MOVE' 01010 FCB 4 01020 FCB MFORE 01030 FDB PREF-CFAOFF 01040 FDB BIF+2 01050 FDB MINUS-CFAOFF 01060 FDB NFA-CFAOFF 01070 MOVE LDD ,U++ count=0? 01080 BEQ MOVEX 01090 PSHS Y,U 01100 LDY ,U 01110 LDU 2,U 01120 MOVELP PULU X 01130 STX ,Y++ 01140 SUBD #1 01150 BNE MOVELP 01160 PULS Y,U 01170 MOVEX LEAU 4,U 01180 NEXT 01190 * 01200 FCC 'CMOVE' 01210 FCB 5 01220 FCB MFORE 01225 FDB MOVE-CFAOFF 01230 FDB BIF+2 01240 FDB CFA-CFAOFF 01250 FDB COMP-CFAOFF 01260 CMOVE LDD #0 01270 SUBD ,U++ 01280 PSHS A,Y 01290 PULU X,Y 01300 BEQ CMOVEX 01310 CMOVEL LDA ,Y+ 01320 STA ,X+ 01330 INCB 01340 BNE CMOVEL 01350 INC ,S 01360 BNE CMOVEL 01370 CMOVEX PULS A,Y 01380 NEXT 01390 * 01400 FCC 'U*' 01410 FCB 2 01420 FCB MFORE 01430 FDB CMOVE-CFAOFF 01440 FDB BIF+2 01450 FDB TOG-CFAOFF 01460 FDB UPDATE-CFAOFF 01470 USTAR LEAS -4,S 01480 LDA 1,U LEAST 01490 LDB 3,U 01500 MUL 01510 STD 2,S 01520 LDA ,U most 01530 LDB 2,U 01540 MUL 01550 STD ,S 01560 LDD 1,U inner 01570 MUL 01580 ADDD 1,S 01590 BCC *+4 01600 INC ,S 01605 STD 1,S 01610 LDA ,U 01620 LDB 3,U 01630 MUL 01640 ADDD 1,S 01650 BCC *+4 01660 INC ,S 01670 STD 1,S 01680 PULS D,X 01690 STD ,U 01700 STX 2,U 01710 NEXT 01720 * 01730 FCC 'U/' 01740 FCB 2 01750 FCB MFORE 01760 FDB USTAR-CFAOFF 01770 FDB BIF+2 01780 FDB 0 01790 FDB 0 01800 USLASH LDA #17 bit ct 01810 PSHS A 01820 LDD 2,U dividend 01830 USLDIV CMPD ,U divisor 01840 BHS USLSUB 01850 ANDCC #.NOT.1 01860 BRA USLBIT 01870 USLSUB SUBD ,U 01880 ORCC #1 quotient, 01890 USLBIT ROL 5,U save it 01900 ROL 4,U 01910 DEC ,S more bits? 01920 BEQ USLR 01930 ROLB remainder 01940 ROLA 01950 BCC USLDIV 01960 BRA USLSUB 01970 USLR LEAS 1,S 01980 LEAU 2,U 01990 LDX 2,U 02000 STD 2,U 02010 STX ,U 02020 NEXT 02030 * 02200 FCC 'AND' 02210 FCB 3 02220 FCB MFORE 02230 FDB USLASH-CFAOFF 02240 FDB BIF+2 02250 FDB ABS-CFAOFF 02260 FDB BACK-CFAOFF 02270 AND PULU D 02280 ANDB 1,U 02290 ANDA ,U 02300 STD ,U 02310 NEXT 02320 * 02330 FCC 'OR' 02340 FCB 2 02350 FCB MFORE 02360 FDB AND-CFAOFF 02370 FDB BIF+2 02380 FDB OCT-CFAOFF 02390 FDB OUT-CFAOFF 02400 OR PULU D 02410 ORB 1,U 02420 ORA ,U 02430 STD ,U 02440 NEXT 02450 * 02460 FCC 'XOR' 02470 FCB 3 02480 FCB MFORE 02490 FDB OR-CFAOFF 02500 FDB BIF+2 02510 FDB 0 02520 FDB 0 02530 XOR PULU D 02540 EORB 1,U 02550 EORA ,U 02560 STD ,U 02570 NEXT 02580 * 02590 FCC 'SP@' 02600 FCB 3 02610 FCB MFORE 02620 FDB XOR-CFAOFF 02630 FDB BIF+2 02640 FDB SPSTO-CFAOFF 02660 FDB 0 02670 SPFEH TFR U,X 02680 PSHU X 02690 NEXT 02700 * 02710 FCC 'SP!' 02720 FCB 3 02730 FCB MFORE 02740 FDB SPFEH-CFAOFF 02750 FDB BIF+2 02760 FDB 0 02770 FDB 0 02780 SPSTO LDX <UP 02790 LDU US0,X 02793 CLR ,U hole 02796 CLR 1,U 02800 NEXT 02810 * 02820 FCC 'RP!' 02830 FCB 3 02840 FCB MFORE 02850 FDB SPSTO-CFAOFF 02860 FDB BIF+2 02870 FDB 0 02880 FDB 0 02890 RPSTO LDX <UP 02900 LDS UR0,X 02903 CLR ,S hole 02906 CLR 1,S 02910 NEXT 02920 * 02930 FCC ';S' 02940 FCB MIMM.OR.2 02950 FCB MFORE 02960 FDB RPSTO-CFAOFF 02970 FDB BIF+2 02980 FDB 0 02990 FDB 0 03000 SEMIS PULS Y un-nest 03010 NEXT 03020 * 03030 FCC 'LEAVE' 03040 FCB MCOMP.OR.5 03050 FCB MFORE 03060 FDB SEMIS-CFAOFF 03070 FDB BIF+2 03080 FDB LATEST-CFAOFF 03090 FDB LFA-CFAOFF 03100 LEAVE LDD ,S index 03110 STD 2,S to limit 03120 NEXT 03130 * 03140 FCC '>R' 03150 FCB MCOMP.OR.2 03160 FCB MFORE 03170 FDB LEAVE-CFAOFF 03180 FDB BIF+2 03190 FDB GT-CFAOFF 03200 FDB QDOT-CFAOFF 03210 TOR PULU D 03220 PSHS D 03230 NEXT 03240 * 03250 FCC 'R>' 03260 FCB MCOMP.OR.2 03270 FCB MFORE 03280 FDB TOR-CFAOFF 03290 FDB BIF+2 03300 FDB R-CFAOFF 03310 FDB REPEAT-CFAOFF 03320 RFROM JMP <XVAR not JSR! 03350 * 03360 FCC 'R' 03370 FCB 1 03380 FCB MFORE 03390 FDB RFROM-CFAOFF 03400 FDB BIF+2 03410 FDB QUIT-CFAOFF 03420 FDB RNUM-CFAOFF 03430 R JMP I 03431 * 03432 FCC '=' 03433 FCB 1 03434 FCB MFORE 03435 FDB R-CFAOFF 03436 FDB BIF+2 03437 FDB LT-CFAOFF 03438 FDB QCOMP-CFAOFF 03439 EQ PULU D 03440 CMPD ,U 03441 BEQ TRUE 03442 BRA FALSE 03451 * 03452 FCC '<' 03453 FCB 1 03454 FCB MFORE 03455 FDB EQ-CFAOFF 03456 FDB BIF+2 03457 FDB SCODE-CFAOFF 03458 FDB BEGHSH-CFAOFF 03459 LT LDD 2,U 03460 CMPD ,U++ 03461 BLT TRUE 03462 BRA FALSE 03463 * 03490 FCC '0=' 03491 FCB 2 03492 FCB MFORE 03493 FDB LT-CFAOFF 03494 FDB BIF+2 03500 FDB 0 03510 FDB ONE-CFAOFF 03520 ZEQ LDD ,U 03530 BNE FALSE 03540 TRUE LDD #-1 03550 STD ,U 03560 NEXT 03570 * 03580 FCC '0<' 03590 FCB 2 03600 FCB MFORE 03610 FDB ZEQ-CFAOFF 03620 FDB BIF+2 03630 FDB ZERO-CFAOFF 03640 FDB ZEQ-CFAOFF 03650 ZLESS LDA ,U 03660 BMI TRUE 03665 FALSE LDD #0 03670 STD ,U 03680 NEXT 03681 * 03682 FCC '>' 03683 FCB 1 03684 FCB MFORE 03685 FDB ZLESS-CFAOFF 03686 FDB BIF+2 03687 FDB 0 03688 FDB TOPRT-CFAOFF 03689 GT LDD 2,U 03690 CMPD ,U++ 03691 BGT TRUE 03692 BRA FALSE 03693 * 03700 FCC '+' 03710 FCB 1 03720 FCB MFORE 03730 FDB GT-CFAOFF 03740 FDB BIF+2 03750 FDB PAREN-CFAOFF 03760 FDB SLASH-CFAOFF 03770 ADD PULU D 03780 ADDTOP 03810 * 03820 FCC '-' 03830 FCB 1 03840 FCB MFORE 03850 FDB ADD-CFAOFF 03860 FDB BIF+2 03870 FDB 0 03880 FDB 0 03890 SUB LDD 2,U 03900 SUBD ,U++ 03910 STD ,U 03920 NEXT 03930 * 03940 FCC 'D+' 03950 FCB 2 03960 FCB MFORE 03970 FDB SUB-CFAOFF 03980 FDB BIF+2 03990 FDB CONST-CFAOFF 04000 FDB DABS-CFAOFF 04010 DADD LDD 6,U 04020 ADDD 2,U 04030 STD 6,U 04040 LDD 4,U 04050 ADCB 1,U 04060 ADCA ,U 04070 LEAU 4,U 04080 STD ,U 04090 NEXT 04100 * 04120 FCC 'D-' 04130 FCB 2 04140 FCB MFORE 04150 FDB DADD-CFAOFF 04160 FDB BIF+2 04170 FDB DCHS-CFAOFF 04180 FDB DDOT-CFAOFF 04190 DSUB LDD 6,U 04200 SUBD 2,U 04210 STD 6,U 04220 LDD 4,U 04230 SBCB 1,U 04240 SBCA ,U 04250 LEAU 4,U 04260 STD ,U 04270 NEXT 04280 * 04290 FCC 'MINUS' 04300 FCB 5 04310 FCB MFORE 04320 FDB DSUB-CFAOFF 04330 FDB BIF+2 04340 FDB 0 04350 FDB MOD-CFAOFF 04360 MINUS LDD #0 04370 SUBD ,U 04380 STD ,U 04390 NEXT 04400 * 04410 FCC 'DMINUS' 04420 FCB 6 04430 FCB MFORE 04440 FDB MINUS-CFAOFF 04450 FDB BIF+2 04460 FDB 0 04470 FDB 0 04480 DMINUS LDD #0 04490 SUBD 2,U 04500 STD 2,U 04510 LDD #0 04520 SBCB 1,U 04530 SBCA ,U 04570 STD ,U 04580 NEXT 04590 * 04600 FCC 'OVER' 04610 FCB 4 04620 FCB MFORE 04630 FDB DMINUS-CFAOFF 04640 FDB BIF+2 04650 FDB OR-CFAOFF 04660 FDB PFA-CFAOFF 04670 OVER LDD 2,U 04680 PSHU D 04690 NEXT 04700 * 04710 FCC 'DROP' 04720 FCB 4 04730 FCB MFORE 04740 FDB OVER-CFAOFF 04750 FDB BIF+2 04760 FDB DPL-CFAOFF 04770 FDB EMIT-CFAOFF 04780 DROP LEAU 2,U 04790 NEXT 04800 * 04810 FCC 'SWAP' 04820 FCB 4 04830 FCB MFORE 04840 FDB DROP-CFAOFF 04850 FDB BIF+2 04860 FDB ROT-CFAOFF 04870 FDB VAR-CFAOFF 04880 SWAP PULU D,X 04890 PSHU D 04900 PSHU X 04910 NEXT 04920 * 04930 FCC 'DUP' 04940 FCB 3 04940 FCB MFORE 04950 FDB SWAP-CFAOFF 04960 FDB BIF+2 04970 FDB 0 * DUMP-CFAOFF 04980 FDB ELSE-CFAOFF 04990 DUP LDD ,U 05000 PSHU D 05010 NEXT 05020 * 05030 FCC '+!' 05040 FCB 2 05050 FCB MFORE 05060 FDB DUP-CFAOFF 05070 FDB BIF+2 05080 FDB 0 05090 FDB 0 05100 ADDSTO PULU X 05110 LDD ,X 05120 ADDD ,U++ 05130 STD ,X 05140 NEXT 05150 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 05160 FCC 'TOGGLE' 05170 FCB 6 05180 FCB MFORE 05190 FDB ADDSTO-CFAOFF 05200 FDB BIF+2 05210 FDB TIB-CFAOFF 05220 FDB TYPE-CFAOFF 05230 TOG PULU D,X 05240 EORB ,X 05250 STB ,X 05260 NEXT 05270 * 05280 FCC 'C@' 05290 FCB 2 05300 FCB MFORE 05310 FDB TOG-CFAOFF 05320 FDB BIF+2 05330 FDB BUFFER-CFAOFF 05340 FDB DADD-CFAOFF 05350 CFEH LDB [,U] 05360 CLRA 05370 STD ,U 05380 NEXT 05390 * 05400 FCC 'C!' 05410 FCB 2 05420 FCB MFORE 05430 FDB CFEH-CFAOFF 05440 FDB BIF+2 05450 FDB 0 05460 FDB 0 05470 CSTO LDB 3,U 05480 STB [,U] 05490 LEAU 4,U 05500 NEXT 05510 * 05520 FCC 'ROT' 05530 FCB 3 05540 FCB MFORE 05550 FDB CSTO-CFAOFF 05560 FDB BIF+2 05570 FDB RFROM-CFAOFF 05580 FDB SMUDGE-CFAOFF 05590 ROT PSHS Y 05600 PULU D,X,Y 05610 PSHU D,X 05620 PSHU Y 05630 PULS Y 05640 NEXT 05650 * 05660 FCC 'BACK' back ref 05670 FCB MCOMP.OR.4 05680 FCB MFORE 05690 FDB ROT-CFAOFF 05700 FDB BIF+2 05710 FDB BPBUF-CFAOFF 05720 FDB BEGIN-CFAOFF 05730 BACK LDX <UP 05740 PULU D target 05750 SUBD UDP,X here 05755 SUBD #2 past 05760 PSHU D 05770 JMP COMMA 05780 * 05800 FCC 'NOT' 05810 FCB 3 05820 FCB MFORE 05830 FDB BACK-CFAOFF 05840 FDB BIF+2 05850 FDB NDOT-CFAOFF 05860 FDB 0 05870 NOT LDD ,U 05880 COMB 05890 COMA 05900 STD ,U 05910 NEXT 05920 * 05990 FCC /'/ 06000 FCB MIMM.OR.1 06010 FCB MFORE 06020 FDB NOT-CFAOFF 06030 FDB BIF+2 06040 FDB HASHS-CFAOFF 06050 FDB 0 06055 * ' see fig-FORTH model 06060 TICK DOCOL 06070 FDB DDFIND 06080 FDB DROP 06090 FDB DUP 06100 FDB ZEQ 06110 FDB ZERO 06120 FDB QERR 06130 FDB LITER 06140 FDB SEMIS 06150 * 07000 FCC '-->' 07010 FCB MIMM.OR.3 07020 FCB MFORE 07030 FDB TICK-CFAOFF 07040 FDB BIF+2 07050 FDB PLOOP-CFAOFF 07060 FDB DOT-CFAOFF 07065 * --> see fig-FORTH model 07070 NEXSCR DOCOL 07080 FDB QLOAD 07090 FDB ZERO 07100 FDB IN 07110 FDB STORE 07120 FDB BPSCR 07130 FDB BLK 07140 FDB FETCH 07150 FDB OVER 07160 FDB MOD remaining in screen 07170 FDB SUB 07180 FDB BLK 07190 FDB ADDSTO to next 07200 FDB SEMIS 07290 * 07300 FCC '1ARRAY' 07310 FCB 6 07320 FCB MFORE 07330 FDB NEXSCR-CFAOFF 07340 FDB BIF+2 07350 FDB SUB1-CFAOFF 07360 FDB TBR-CFAOFF 07370 ONEARR DOCOL 07380 FDB CREATE 07390 FDB IPCOM 07400 DO1ARR 07410 FDB XMACH 07415 LDX ,U 07420 CMPX #255 0<el-size<256 07430 BLS ONEARW 07440 ONEARE LDD #$0D 07450 PSHU D 07460 LBRA ERROR 07470 ONEARW LDD 4,U swap 07480 STD ,U 07490 STX 4,U 07500 LDD 2,U last 07510 SUBD ,U first 07520 BLT ONEARE real dimension? 07530 ADDD #1 element count 07540 STD 2,U 07550 PSHU D,X 07560 DOCOL 07570 FDB USTAR 07580 FDB LIT overflow? 07590 FDB $0D 07600 FDB QERR 07610 FDB TOR byte count 07620 FDB COMMA base 07630 FDB COMMA width 07640 FDB CCOMMA element size 07650 FDB RFROM 07660 FDB ALLOT 07670 FDB SMUDGE 07680 FDB SEMIS 07690 * 07700 FCC 'UTILITIES' 07710 FCB MIMM.OR.9 07720 FCB MFORE 07730 FDB ONEARR-CFAOFF 07740 FDB BIF+2 07750 FDB 0 07760 FDB 0 07770 UTIL DOVOC 07780 FDB DPFEH-CFAOFF 07890 * 07900 FCC 'DP@' 07910 FCB 3 07920 FCB MFORE 07930 FDB UTIL-CFAOFF 07940 FDB UTIL+2 07950 FDB 0 07960 FDB 0 07970 DPFEH TFR DP,A 07980 CLRB 07990 PSHU D 07992 NEXT 07994 * 08000 FCC 'DCONSTANT' 08010 FCB 9 08020 FCB MFORE 08030 FDB DPFEH-CFAOFF 08040 FDB BIF+2 08050 FDB 0 08060 FDB 0 08070 DCON DOCOL 08080 FDB CREATE 08090 FDB IPCOM 08100 JSR <XDCON 08110 FDB COMMA 08120 FDB COMMA 08130 FDB SMUDGE 08140 FDB SEMIS 08390 * 08300 FCC 'SWAB' 08310 FCB 4 08320 FCB MFORE 08330 FDB DCON-CFAOFF 08340 FDB BIF+2 08350 FDB 0 08360 FDB SWAN-CFAOFF 08370 SWAB LDD ,U 08380 STB ,U LS byte 08390 STA 1,U MS byte 08400 NEXT 08490 * 08500 FCC 'SWAN' 08510 FCB 4 08520 FCB MFORE 08530 FDB SWAB-CFAOFF 08540 FDB BIF+2 08550 FDB 0 08560 FDB 0 08570 SWAN LDA 1,U 08580 LDB 1,U 08590 LSRA 08600 RORB 08610 LSRA 08620 RORB 08630 LSRA 08640 RORB 08650 LSRA 08660 RORB 08670 STB 1,U 08680 LDA ,U 08690 LDB ,U 08700 LSRA 08710 RORB 08720 LSRA 08730 RORB 08740 LSRA 08750 RORB 08760 LSRA 08770 RORB 08780 STB ,U 08790 NEXT 08890 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 01000 FCC '1+' 01010 FCB 2 01020 FCB MFORE 01030 FDB SWAN-CFAOFF 01040 FDB BIF+2 01050 FDB ZLESS-CFAOFF 01060 FDB ADD2-CFAOFF 01070 ADD1 LDD #1 01080 ADDTOP 01110 * 01120 FCC '1-' 01130 FCB 2 01140 FCB MFORE 01150 FDB ADD1-CFAOFF 01160 FDB BIF+2 01170 FDB 0 01180 FDB 0 01190 SUB1 LDD #-1 01200 ADDTOP 01230 * 01240 FCC '2+' 01250 FCB 2 01260 FCB MFORE 01270 FDB SUB1-CFAOFF 01280 FDB BIF+2 01290 FDB TWO-CFAOFF 01300 FDB RSHIFT-CFAOFF 01310 ADD2 LDD #2 01320 ADDTOP 01330 * 01340 FCC '2-' 01350 FCB 2 01360 FCB MFORE 01370 FDB ADD2-CFAOFF 01380 FDB BIF+2 01390 FDB 0 01400 FDB 0 01410 SUB2 LDD #-2 01420 ADDTOP 01430 * 01440 FCC '0' 01450 FCB 1 01460 FCB MFORE 01470 FDB SUB2-CFAOFF 01480 FDB BIF+2 01490 FDB SLAMOD-CFAOFF 01500 FDB INULL-CFAOFF 01510 ZERO LDD #0 01520 PSHU D 01530 NEXT 01540 * 01550 FCC '1' 01560 FCB 1 01570 FCB MFORE 01580 FDB ZERO-CFAOFF 01590 FDB BIF+2 01600 FDB ZBR-CFAOFF 01610 FDB 0 01620 ONE LDD #1 01630 PSHU D 01640 NEXT 01650 * 01660 FCC '-1' 01670 FCB 2 01680 FCB MFORE 01690 FDB ONE-CFAOFF 01700 FDB BIF+2 01710 FDB 0 01720 FDB DDFIND-CFAOFF 01730 MONE LDD #-1 01740 PSHU D 01750 NEXT 01760 * 01770 FCC '2' 01780 FCB 1 01790 FCB MFORE 01800 FDB MONE-CFAOFF 01810 FDB BIF+2 01820 FDB ONEARR-CFAOFF 01830 FDB LSHIFT-CFAOFF 01840 TWO DOCON 01850 FDB 2 01860 * 01870 FCC '3' 01880 FCB 1 01890 FCB MFORE 01895 FDB TWO-CFAOFF 01900 FDB BIF+2 01910 FDB 0 01920 FDB 0 01930 THREE DOCON 01940 FDB 3 01950 * 01960 FCC 'BL' 01970 FCB 2 01980 FCB MFORE 01990 FDB THREE-CFAOFF 02000 FDB BIF+2 02010 FDB 0 02020 FDB 0 02030 BL DOCON 02040 FDB $20 ascii SP 02050 * 02060 FCC 'C/L' 02070 FCB 3 02080 FCB MFORE 02090 FDB BL-CFAOFF 02100 FDB BIF+2 02110 FDB 0 02120 FDB 0 02130 CPERL DOUCON 02140 FCB UCOLUM 02170 * 02180 FCC 'FIRST' 02190 FCB 5 02200 FCB MFORE 02210 FDB CPERL-CFAOFF 02220 FDB BIF+2 02230 FDB 0 02240 FDB FLD-CFAOFF 02250 FIRST DOUCON 02260 FCB UFIRST 02290 * 02300 FCC 'LIMIT' 02310 FCB 5 02320 FCB MFORE 02330 FDB FIRST-CFAOFF 02340 FDB BIF+2 02350 FDB LEAVE-CFAOFF 02360 FDB LITER-CFAOFF 02370 LIMIT DOUCON 02380 FCB ULIMIT 02400 * 02410 BWID EQU 256 bytes 02420 FCC 'B/BUF' 02430 FCB 5 02440 FCB MFORE 02450 FDB LIMIT-CFAOFF 02460 FDB BIF+2 02470 FDB ASMBLR-CFAOFF 02480 FDB BPSCR-CFAOFF 02490 BPBUF DOCON 02500 FDB BWID 02510 * 02520 BCT EQU 4 buffers 02520 FCC 'B/SCR' 02530 FCB 5 02540 FCB MFORE 02550 FDB BPBUF-CFAOFF 02560 FDB BIF+2 02570 FDB 0 02580 FDB 0 02590 BPSCR DOCON 02600 FDB BCT 02610 * 02620 FCC '+ORIGIN' 02630 FCB 7 02640 FCB MFORE 02650 FDB BPSCR-CFAOFF 02660 FDB BIF+2 02670 FDB 0 02680 FDB 0 02690 PORIG LDD #ORIG 02700 LBRA ADD+2 02710 * 02715 * some USER vars hidden 02720 * fig-FORTH USER vars not present: 02722 * WIDTH VOC-LINK CONTEXT CURRENT 02724 * 02730 FCC 'TIB' 02740 FCB 3 02750 FCB MFORE 02760 FDB PORIG-CFAOFF 02770 FDB BIF+2 02780 FDB 0 02790 FDB 0 02800 TIB DOUSER 02810 FCB UTIB 02820 * 02930 FCC 'WARNING' 02940 FCB 7 02950 FCB MFORE 02960 FDB TIB-CFAOFF 02970 FDB BIF+2 02980 FDB 0 02990 FDB 0 03000 WARN DOUSER 03010 FCB UWARN 03020 * 03030 FCC 'FENCE' 03040 FCB 5 03050 FCB MFORE 03060 FDB WARN-CFAOFF 03070 FDB BIF+2 03080 FDB 0 03090 FDB 0 03100 FENCE DOUSER 03110 FCB UFENCE 03120 * 03130 FCC 'DP' 03140 FCB 2 03150 FCB MFORE 03160 FDB FENCE-CFAOFF 03170 FDB BIF+2 03180 FDB DOES-CFAOFF 03190 FDB 0 03200 DPC DOUSER 03210 FCB UDP 03220 * 03230 FCC 'ROOT' 03240 FCB 4 03250 FCB MFORE 03260 FDB DPC-CFAOFF 03270 FDB BIF+2 03280 FDB 0 03290 FDB 0 03300 ROOT DOUSER not fig 03310 FCB UROOT 03320 * 03330 FCC 'BLK' 03340 FCB 3 03350 FCB MFORE 03360 FDB ROOT-CFAOFF 03370 FDB BIF+2 03380 FDB BLANKS-CFAOFF 03390 FDB BLOCK-CFAOFF 03400 BLK DOUSER 03410 FCB UBLK 03420 * 03430 FCC 'IN' 03440 FCB 2 03450 FCB MFORE 03460 FDB BLK-CFAOFF 03470 FDB BIF+2 03480 FDB IMMED-CFAOFF 03490 FDB INTERP-CFAOFF 03500 IN DOUSER 03510 FCB UIN 03520 * 03530 FCC 'OUT' 03540 FCB 3 03550 FCB MFORE 03560 FDB IN-CFAOFF 03570 FDB BIF+2 03580 FDB 0 03590 FDB 0 03600 OUT DOUSER 03610 FCB UOUT 03620 * 03630 FCC 'SCR' 03640 FCB 3 03650 FCB MFORE 03660 FDB OUT-CFAOFF 03670 FDB BIF+2 03680 FDB 0 03690 FDB 0 03700 SCR DOUSER 03710 FCB USCR 03720 * 03730 FCC 'OFFSET' 03740 FCB 6 03750 FCB MFORE 03760 FDB SCR-CFAOFF 03770 FDB BIF+2 03780 FDB 0 03790 FDB 0 03800 OFFSET DOUSER 03810 FCB UOFFS 03820 * 03830 FCC 'STATE' 03840 FCB 5 03850 FCB MFORE 03860 FDB OFFSET-CFAOFF 03870 FDB BIF+2 03880 FDB SPACES-CFAOFF 03890 FDB SWAB-CFAOFF 03900 STATE DOUSER 03910 FCB USTATE 03920 * 03930 FCC 'BASE' 03940 FCB 4 03950 FCB MFORE 03960 FDB STATE-CFAOFF 03970 FDB BIF+2 03980 FDB 0 03990 FDB 0 04000 BASE DOUSER 04010 FCB UBASE 04020 * 04030 FCC 'DPL' 04040 FCB 3 04050 FCB MFORE 04060 FDB BASE-CFAOFF 04070 FDB BIF+2 04080 FDB DPC-CFAOFF 04090 FDB DROFFS-CFAOFF 04100 DPL DOUSER 04110 FCB UDPL 04120 * 04130 FCC 'FLD' 04140 FCB 3 04150 FCB MFORE 04160 FDB DPL-CFAOFF 04170 FDB BIF+2 04180 FDB 0 04190 FDB 0 04200 FLD DOUSER 04210 FCB UFLD 04220 * 04230 FCC 'CSP' 04240 FCB 3 04250 FCB MFORE 04260 FDB FLD-CFAOFF 04270 FDB BIF+2 04280 FDB 0 04290 FDB CURR-CFAOFF 04300 CSP DOUSER 04310 FCB UCSP 04320 * 04330 FCC 'R#' 04340 FCB 2 04350 FCB MFORE 04360 FDB CSP-CFAOFF 04370 FDB BIF+2 04380 FDB 0 04390 FDB RW-CFAOFF 04400 RNUM DOUSER 04410 FCB URNUM 04420 * 04430 FCC 'HLD' 04440 FCB 3 04450 FCB MFORE 04460 FDB RNUM-CFAOFF 04470 FDB BIF+2 04480 FDB HEX-CFAOFF 04490 FDB HOLD-CFAOFF 04500 HLD DOUSER 04510 FCB UHLD 04520 * 04530 FCC 'FOREWARD' 04540 FCB 8 04550 FCB MFORE 04560 FDB HLD-CFAOFF 04570 FDB BIF+2 04580 FDB 0 04590 FDB 0 04600 FORE DOUSER not fig 04610 FCB UFORE 04620 * 04630 FCC 'CURRENT' 04640 FCB 7 04650 FCB MFORE 04660 FDB FORE-CFAOFF 04670 FDB BIF+2 04680 FDB 0 04690 FDB 0 04700 CURR DOUSER not fig 04710 FCB UCURR 04720 * 04730 FCC 'PREV' 04740 FCB 4 04750 FCB MFORE 04760 FDB CURR-CFAOFF 04770 FDB BIF+2 04780 FDB 0 04790 FDB 0 04800 PREV DOUSER moved 04810 FCB UPREV 04820 * 04830 FCC 'USE' 04840 FCB 3 04850 FCB MFORE 04860 FDB PREV-CFAOFF 04870 FDB BIF+2 04880 FDB 0 04890 FDB 0 04900 USE DOUSER moved 04910 FCB UUSE 04920 * 04930 FCC 'DROOT' 04940 FCB 5 04950 FCB MFORE 04960 FDB USE-CFAOFF 04970 FDB BIF+2 04980 FDB 0 04990 FDB 0 05000 DROOT DOUSER not fig 05010 FCB UDROOT 05020 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 05030 FCC 'HERE' 05040 FCB 4 05050 FCB MFORE 05060 FDB DROOT-CFAOFF 05070 FDB BIF+2 05080 FDB FOREMK-CFAOFF 05090 FDB I-CFAOFF 05100 HERE LDX <UP 05110 LDD UDP,X 05120 PSHU D 05122 HERERR LDX <UP 05124 CMPU UDP,X 05128 BLS ALLERR 05130 NEXT 05132 ALLERR LDD #2 05134 PSHU D 05136 JMP ERROR 05140 * 05150 FCC 'ALLOT' 05160 FCB 5 05170 FCB MFORE 05180 FDB HERE-CFAOFF 05190 FDB BIF+2 05200 FDB AGAIN-CFAOFF 05210 FDB 0 05220 ALLOT LDX <UP 05222 LDD UDP,X 05223 BMI ALLERR 05224 ADDD ,U++ 05226 STD UDP,X 05228 BRA HERERR 05230 * 05238 FCC ',' 05240 FCB 1 05250 FCB MFORE 05260 FDB ALLOT-CFAOFF 05270 FDB BIF+2 05280 FDB PORIG-CFAOFF 05290 FDB SUB-CFAOFF 05300 COMMA PULU D allocate and store 05310 PSHS Y 05320 LDY <UP 05330 LDX UDP,Y 05340 STD ,X++ 05350 COMSTO STX UDP,Y 05360 PULS Y 05375 BRA HERERR 05380 * 05390 FCC 'C,' 05400 FCB 2 05410 FCB MFORE 05420 FDB COMMA-CFAOFF 05430 FDB BIF+2 05440 FDB CSTO-CFAOFF 05450 FDB CPERL-CFAOFF 05460 CCOMMA PULU D 05470 PSHS Y 05480 LDY <UP 05490 LDX UDP,Y 05500 STB ,X+ 05510 BRA COMSTO 05520 * 05530 FCC 'SPACE' 05540 FCB 5 05550 FCB MFORE 05560 FDB CCOMMA-CFAOFF 05570 FDB BIF+2 05580 FDB SPFEH-CFAOFF 05590 FDB STATE-CFAOFF 05600 SPACE LDB BL+3,PCR 05610 LBRA EMIT+2 05620 * 05630 FCC '-DUP' 05640 FCB 4 05650 FCB MFORE 05660 FDB SPACE-CFAOFF 05670 FDB BIF+2 05680 FDB MONE-CFAOFF 05690 FDB DTRAIL-CFAOFF 05700 DDUP LDD ,U 05710 BEQ *+4 05720 PSHU D 05730 NEXT 05740 * 05750 FCC '?CST' 05760 FCB 4 05770 FCB MFORE 05780 FDB DDUP-CFAOFF 05790 FDB BIF+2 05800 FDB QCSP-CFAOFF 05810 FDB QERR-CFAOFF 05820 QCST LDX <UP 05830 LDB USTATE+1,X 05840 ANDB #SCOMP 05850 CLRA 05860 PSHU D 05870 NEXT 05890 * 05900 FCC 'IF' 05910 FCB MIMM.OR.MCOMP.OR.2 05920 FCB MFORE 05930 FDB QCST-CFAOFF 05940 FDB BIF+2 05950 FDB DO-CFAOFF 05960 FDB QUERY-CFAOFF 05965 * IF see fig-FORTH model 05970 IF DOCOL 05980 FDB COMP 05990 FDB ZBR 06000 FDB HERE adr 06010 FDB ZERO 06020 FDB COMMA 06030 FDB LIT 06040 FDB ('I)*256+'F 06060 FDB SEMIS 06090 * 06100 FCC 'ELSE' 06110 FCB MIMM.OR.MCOMP.OR.4 06120 FCB MFORE 06130 FDB IF-CFAOFF 06140 FDB BIF+2 06150 FDB EDITOR-CFAOFF 06160 FDB 0 06170 ELSE DOCOL 06172 FDB DUP 06173 FDB LIT 06175 FDB ('I)*256+'F 06178 FDB QPAIRS 06180 FDB COMP 06190 FDB BRANCH 06200 FDB HERE adr 06205 FDB ZERO 06210 FDB COMMA 06220 FDB ROT 06230 FDB FILLIN IF adr 06250 FDB SWAP for ENDIF 06260 FDB SEMIS 06290 * 06300 FCC 'ENDIF' 06310 FCB MIMM.OR.MCOMP.OR.5 06320 FCB MFORE 06330 FDB ELSE-CFAOFF 06340 FDB BIF+2 06350 FDB DROP-CFAOFF 06360 FDB FIND-CFAOFF 06370 ENDIF DOCOL 06380 FDB QCOMP 06390 FDB LIT 06400 FDB ('I)*256+'F 06410 FDB QPAIRS 06420 FDB FILLIN 06470 FDB SEMIS 06490 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 01000 FCC 'LATEST' 01010 FCB 6 01020 FCB MFORE 01030 FDB ENDIF-CFAOFF 01040 FDB BIF+2 01050 FDB 0 01060 FDB 0 01070 LATEST DOUCON not ROOT! 01080 FCB UCURR NFA 01110 * 01115 * convert NFA to LFA,CFA,GFA,PFA 01120 FCC 'LFA' 01130 FCB 3 01140 FCB MFORE 01150 FDB LATEST-CFAOFF 01160 FDB BIF+2 01170 FDB 0 01180 FDB 0 01190 LFA LDB #LFAOFF 01200 BRA CFA+2 01210 * 01220 FCC 'CFA' 01230 FCB 3 01240 FCB MFORE 01250 FDB LFA-CFAOFF 01260 FDB BIF+2 01270 FDB 0 01280 FDB 0 01290 CFA LDB #CFAOFF 01292 SEX 01294 ADDD ,U 01296 STD ,U 01300 NEXT 01310 * 01320 FCC 'GFA' 01330 FCB 3 01340 FCB MFORE 01350 FDB CFA-CFAOFF 01360 FDB BIF+2 01370 FDB 0 01380 FDB 0 01390 GFA LDB #GFAOFF 01400 BRA CFA+2 01410 * 01420 FCC 'PFA' 01430 FCB 3 01440 FCB MFORE 01450 FDB GFA-CFAOFF 01460 FDB BIF+2 01470 FDB PAD-CFAOFF 01480 FDB PREV-CFAOFF 01490 PFA LDB #PFAOFF 01500 BRA CFA+2 01510 * 01515 * PFA to NFA 01520 FCC 'NFA' 01530 FCB 3 01540 FCB MFORE 01550 FDB PFA-CFAOFF 01560 FDB BIF+2 01570 FDB NCOMMA-CFAOFF 01580 FDB NOT-CFAOFF 01590 NFA LDB #-PFAOFF 01600 BRA CFA+2 01610 * 01620 FCC '!CSP' 01630 FCB 4 01640 FCB MFORE 01650 FDB NFA-CFAOFF 01660 FDB BIF+2 01670 FDB 0 01680 FDB HASH-CFAOFF 01690 STOCSP LDX <UP 01700 STU UCSP,X 01710 NEXT 01720 * 01730 FCC 'HEX' 01740 FCB 3 01750 FCB MFORE 01760 FDB STOCSP-CFAOFF 01770 FDB BIF+2 01780 FDB 0 01790 FDB 0 01800 HEX LDB #16 01810 CLRA 01820 LDX <UP 01830 STD UBASE,X 01840 NEXT 01850 * 01860 FCC 'DECIMAL' 01870 FCB 7 01880 FCB MFORE 01890 FDB HEX-CFAOFF 01900 FDB BIF+2 01910 FDB DAD-CFAOFF 01920 FDB DEFS-CFAOFF 01930 DEC LDB #10 01940 BRA HEX+2 01950 * 01960 FCC 'OCTAL' 01970 FCB 5 01980 FCB MFORE 01990 FDB DEC-CFAOFF 02000 FDB BIF+2 02010 FDB 0 02020 FDB OFFSET-CFAOFF 02030 OCT LDB #8 02040 BRA HEX+2 02050 * 02060 FCC 'FILL' 02070 FCB 4 02080 FCB MFORE 02090 FDB OCT-CFAOFF 02100 FDB BIF+2 02110 FDB FENCE-CFAOFF 02120 FDB FILLIN-CFAOFF 02130 FILL PSHS Y 02140 PULU D,X,Y 02150 STB ,Y+ 02160 LEAX -1,X 02170 BNE *-4 02180 PULS Y 02190 NEXT 02200 * 02210 FCC 'ERASE' 02220 FCB 5 02230 FCB MFORE 02240 FDB FILL-CFAOFF 02250 FDB BIF+2 02260 FDB 0 02270 FDB 0 02280 ERASE LDB #0 02290 PSHU D 02300 BRA FILL 02310 * 02320 FCC 'BLANKS' 02330 FCB 6 02340 FCB MFORE 02350 FDB ERASE-CFAOFF 02360 FDB BIF+2 02370 FDB BL-CFAOFF 02380 FDB 0 02390 BLANKS LDB #$20 ascii SP 02400 PSHU D 02410 BRA FILL 02420 * 02430 FCC 'HOLD' 02440 FCB 4 02450 FCB MFORE 02460 FDB BLANKS-CFAOFF 02470 FDB BIF+2 02480 FDB 0 02490 FDB 0 02500 HOLD PULU D CH 02510 PSHS Y 02520 LDY <UP 02530 LDX UHLD,Y 02540 STB ,-X 02550 STX UHLD,Y 02555 PULS Y 02560 NEXT 02570 * 02580 FCC 'PAD' 02590 FCB 3 02600 FCB MFORE 02610 FDB HOLD-CFAOFF 02620 FDB BIF+2 02630 FDB 0 02640 FDB 0 02650 PAD DOUCON moved! 02660 FCB UPAD 02700 * 02710 FCC 'S->D' 02720 FCB 4 02730 FCB MFORE 02740 FDB PAD-CFAOFF 02750 FDB BIF+2 02760 FDB RPSTO-CFAOFF 02770 FDB SIGN-CFAOFF 02780 STOD LEAU -2,U 02790 LDD 2,U 02795 LBRA ZLESS+2 02800 * 02810 FCC '+-' 02820 FCB 2 02830 FCB MFORE 02840 FDB STOD-CFAOFF 02850 FDB BIF+2 02860 FDB ADDSTO-CFAOFF 02870 FDB ADDBUF-CFAOFF 02880 CHS LDD ,U++ 02890 LBMI MINUS 02895 NEXT 02900 * 02910 FCC 'D+-' 02920 FCB 3 02930 FCB MFORE 02940 FDB STOD-CFAOFF 02950 FDB BIF+2 02960 FDB 0 02970 FDB 0 02980 DCHS LDD ,U++ 02990 LBMI DMINUS 02995 NEXT 03000 * 03010 FCC 'ABS' 03020 FCB 3 03030 FCB MFORE 03040 FDB DCHS-CFAOFF 03050 FDB BIF+2 03060 FDB ABORT-CFAOFF 03070 FDB ALLOT-CFAOFF 03080 ABS LDD ,U 03090 LBMI MINUS 03095 NEXT 03100 * 03110 FCC 'DABS' 03120 FCB 4 03130 FCB MFORE 03140 FDB ABS-CFAOFF 03150 FDB BIF+2 03160 FDB DSUB-CFAOFF 03170 FDB DIGIT-CFAOFF 03180 DABS LDD ,U 03190 LBMI DMINUS 03195 NEXT 03200 * 03210 FCC 'MIN' 03220 FCB 3 03230 FCB MFORE 03240 FDB DABS-CFAOFF 03250 FDB BIF+2 03260 FDB MSMOD-CFAOFF 03270 FDB MOVE-CFAOFF 03280 MIN PULU D 03284 CMPD ,U 03288 BGE *+4 03290 STD ,U 03295 NEXT 03300 * 03310 FCC 'MAX' 03320 FCB 3 03330 FCB MFORE 03340 FDB MIN-CFAOFF 03350 FDB BIF+2 03360 FDB 0 03370 FDB 0 03380 MAX PULU D 03384 CMPD ,U 03388 BLE *+4 03390 STD ,U 03395 NEXT 03400 * 03410 FCC '[' 03412 FCB MIMM.OR.1 03414 FCB MFORE 03416 FDB MAX-CFAOFF 03418 FDB BIF+2 03420 FDB XOR-CFAOFF 03422 FDB 0 03430 LBRAK LDB #.NOT.SCOMP 03435 LDX <UP 03440 ANDB USTATE+1,X 03445 STB USTATE+1,X 03450 NEXT 03500 * 03510 FCC ']' 03512 FCB 1 03514 FCB MFORE 03516 FDB LBRAK-CFAOFF 03518 FDB BIF+2 03520 FDB 0 03522 FDB 0 03530 RBRAK LDB #SCOMP 03535 LDX <UP 03540 ORB USTATE+1,X 03545 STB USTATE+1,X 03550 NEXT 03555 * 03560 FCC 'IMMEDIATE' 03562 FCB 9 03564 FCB MFORE 03566 FDB RBRAK-CFAOFF 03568 FDB BIF+2 03570 FDB 0 03572 FDB 0 03580 IMMED LDB #MIMM 03585 BRA SMUDGE+2 03600 * 03610 FCC 'SMUDGE' 03612 FCB 6 03614 FCB MFORE 03616 FDB IMMED-CFAOFF 03618 FDB BIF+2 03620 FDB STOD-CFAOFF 03622 FDB SPACE-CFAOFF 03630 SMUDGE LDB #MHID 03635 LDX <UP 03645 EORB [UCURR,X] 03650 STB [UCURR,X] 03655 NEXT 03657 * 03660 FCC 'COMPILE-ONLY' 03662 FCB 12 03664 FCB MFORE 03666 FDB SMUDGE-CFAOFF 03668 FDB BIF+2 03670 FDB 0 03672 FDB 0 03680 COMPO LDB #MCOMP 03685 BRA SMUDGE+2 03800 * 03810 FCC 'COUNT' 03812 FCB 5 03814 FCB MFORE 03816 FDB COMPO-CFAOFF 03818 FDB BIF+2 03820 FDB 0 03822 FDB 0 03830 COUNT LDX ,U CT OF STR 03835 LDB ,X+ 03840 STX ,U STRING 03845 CLRA 03850 PSHU D COUNT 03855 NEXT 03900 * 03910 FCC '-TRAILING' 03912 FCB 9 03914 FCB MFORE 03916 FDB COUNT-CFAOFF 03918 FDB BIF+2 03920 FDB DIFIND-CFAOFF 03922 FDB 0 03930 DTRAIL LDD ,U 03935 LDX 2,U 03940 LEAX D,X END 03945 LDA #$20 ascii SP 03950 DTRAL CMPA ,-X 03955 BNE DTRAD 03960 CMPX 2,U 03965 BHS DTRAL 03970 DTRAD TFR X,D 03975 SUBD 2,U 03980 ADDD #1 03985 STD ,U 03990 NEXT 04000 * 04010 FCC '(MACHINE)' 04012 FCB MCOMP.OR.9 04014 FCB MFORE 04016 FDB DTRAIL-CFAOFF 04018 FDB BIF+2 04020 FDB XLINE-CFAOFF 04022 FDB INUMB-CFAOFF 04030 XMACH TFR Y,X 04040 PULS Y UN-NEST 04050 JMP ,X IN LINE MACHINE CODE 04100 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 04110 FCC 'TYPE' 04112 FCB 4 04114 FCB MFORE 04116 FDB XMACH-CFAOFF 04118 FDB BIF+2 04120 FDB 0 04122 FDB 0 04130 TYPE LDD ,U 04132 BEQ TYPEQ 04135 ADDD 2,U 04140 STD ,U for compare 04145 LDX 2,U 04150 TYPEL LDB ,X+ 04155 STX 2,U 04160 CLRA 04165 PSHU D 04170 DOCOL 04175 FDB EMIT 04180 FDB XMACH 04185 LDX 2,U 04190 CMPX ,U 04195 BLO TYPEL 04197 TYPEQ LEAU 4,U 04200 NEXT 04205 * 04210 FCC '(.")' 04212 FCB MCOMP.OR.4 04214 FCB MFORE 04216 FDB TYPE-CFAOFF 04218 FDB BIF+2 04220 FDB XPLOOP-CFAOFF 04222 FDB XSCODE-CFAOFF 04230 XDOTQ LDB ,Y+ count 04235 CLRA 04240 TFR Y,X string 04245 LEAY D,Y past it 04250 PSHU D,X 04255 BRA TYPE 04300 * 04310 FCC 'ID.' 04312 FCB 3 04314 FCB MFORE 04316 FDB XDOTQ-CFAOFF 04318 FDB BIF+2 04320 FDB 0 04322 FDB 0 04330 IDDOT PULU X nfa 04335 LDB ,X 04340 ANDB #NLMASK 04350 NEGB 04360 LEAX B,X past it 04370 NEGB 04380 CLRA 04390 PSHU D,X 04400 BRA TYPE 04410 * 04510 FCC 'FILL-IN' 04512 FCB MCOMP.OR.7 04514 FCB MFORE 04516 FDB IDDOT-CFAOFF 04518 FDB BIF+2 04520 FDB 0 04522 FDB 0 04530 FILLIN LDX <UP 04540 LDD UDP,X 04550 SUBD ,U adr 04555 SUBD #2 past 04560 STD [,U++] 04570 NEXT 04590 * 04610 FCC 'BEGIN' 04612 FCB MCOMP.OR.MIMM.OR.5 04614 FCB MFORE 04616 FDB FILLIN-CFAOFF 04618 FDB BIF+2 04620 FDB BASE-CFAOFF 04622 FDB 0 04630 BEGIN DOCOL see fig-FORTH model 04640 FDB QCOMP 04650 FDB HERE target 04660 FDB LIT 04670 FDB ('B)*256+'E 04680 FDB SEMIS 04690 * 04710 FCC 'AGAIN' 04712 FCB MCOMP.OR.MIMM.OR.5 04714 FCB MFORE 04716 FDB BEGIN-CFAOFF 04718 FDB BIF+2 04720 FDB 0 04722 FDB 0 04730 AGAIN DOCOL see fig-FORTH model 04740 FDB LIT 04750 FDB ('B)*256+'E 04760 FDB QPAIRS 04765 FDB COMP 04770 FDB BRANCH 04775 FDB BACK 04780 FDB SEMIS 04790 * 04810 FCC 'UNTIL' 04812 FCB MCOMP.OR.MIMM.OR.5 04814 FCB MFORE 04816 FDB AGAIN-CFAOFF 04818 FDB BIF+2 04820 FDB USLASH-CFAOFF 04822 FDB 0 04830 UNTIL DOCOL see fig-FORTH model 04840 FDB LIT 04850 FDB ('B)*256+'E 04860 FDB QPAIRS 04865 FDB COMP 04870 FDB ZBR 04875 FDB BACK 04880 FDB SEMIS 04890 * 04910 FCC 'WHILE' 04912 FCB MCOMP.OR.MIMM.OR.5 04914 FCB MFORE 04916 FDB UNTIL-CFAOFF 04918 FDB BIF+2 04920 FDB WARM-CFAOFF 04922 FDB WORDPD-CFAOFF 04930 WHILE DOCOL 04940 FDB DUP 04950 FDB LIT 04960 FDB ('B)*256+'E 04970 FDB QPAIRS 04980 FDB COMP 04990 FDB ZBR 05000 FDB HERE adr 05010 FDB ZERO 05020 FDB COMMA 05030 FDB LIT 05040 FDB ('W)*256+'H 05050 FDB SEMIS 05090 * 05110 FCC 'REPEAT' 05112 FCB MCOMP.OR.MIMM.OR.6 05114 FCB MFORE 05116 FDB WHILE-CFAOFF 05118 FDB BIF+2 05120 FDB REPEAL-CFAOFF 05122 FDB ROOT-CFAOFF 05130 REPEAT DOCOL 05140 FDB LIT 05150 FDB ('W)*256+'H 05160 FDB QPAIRS 05170 FDB TOR 05180 FDB AGAIN 05190 FDB RFROM 05200 FDB FILLIN 05210 FDB SEMIS 05290 * 05310 FCC 'DO' 05312 FCB MCOMP.OR.MIMM.OR.2 05314 FCB MFORE 05316 FDB WHILE-CFAOFF 05318 FDB BIF+2 05320 FDB CFEH-CFAOFF 05322 FDB ENDIF-CFAOFF 05330 DO DOCOL see fig-FORTH model 05340 FDB COMP 05350 FDB XDO 05360 FDB HERE 05370 FDB LIT 05380 FDB ('D)*256+'O 05390 FDB SEMIS 05400 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 01000 FCC 'M*' 01010 FCB 2 01020 FCB MFORE 01030 FDB DO-CFAOFF 01040 FDB BIF+2 01050 FDB 0 01060 FDB MSLASH-CFAOFF 01070 MSTAR LDD ,U see fig-FORTH model 01080 EORA 2,U n bit 01090 PSHS D 01100 DOCOL 01110 FDB ABS 01120 FDB SWAP 01130 FDB ABS 01140 FDB USTAR 01150 FDB XMACH 01160 LDD ,S++ 01170 LBMI DMINUS 01180 NEXT 01190 * 01200 FCC 'M/' 01210 FCB 2 01220 FCB MFORE 01230 FDB MSTAR-CFAOFF 01240 FDB BIF+2 01250 FDB 0 01260 FDB 0 01270 MSLASH DOCOL see fig-FORTH model 01280 FDB OVER 01290 FDB TOR signs: dividend 01300 FDB TOR & divisor 01310 FDB DABS 01320 FDB R divisor 01330 FDB ABS 01340 FDB USLASH 01350 FDB RFROM divisor 01360 FDB R 01370 FDB XOR quotient sign 01380 FDB CHS 01390 FDB SWAP remainder 01400 FDB RFROM dividend sign 01410 FDB CHS 01420 FDB SWAP 01430 FDB SEMIS 01500 * 01510 FCC '*' 01520 FCB 1 01530 FCB MFORE 01540 FDB MSLASH-CFAOFF 01550 FDB BIF+2 01560 FDB PFIND-CFAOFF 01570 FDB SSMOD-CFAOFF 01580 STAR DOCOL see fig-FORTH model 01590 FDB USTAR 01600 FDB DROP 01610 FDB SEMIS 01700 * 01710 FCC '/MOD' 01720 FCB 4 01730 FCB MFORE 01740 FDB STAR-CFAOFF 01750 FDB BIF+2 01760 FDB 0 01770 FDB 0 01780 SLAMOD LDD ,U 01790 PSHU D 01800 LDD #-1 01810 TST 4,U sign extend 01820 BMI *+5 01830 ADDD #1 01840 STD 2,U 01850 LBRA MSLASH 01900 * 01910 FCC '/' 01920 FCB 1 01930 FCB MFORE 01940 FDB SLAMOD-CFAOFF 01950 FDB BIF+2 01960 FDB NEXSCR-CFAOFF 01970 FDB ADD1-CFAOFF 01980 SLASH DOCOL see fig-FORTH model 01990 FDB SLAMOD 02000 FDB SWAP 02010 FDB DROP 02020 FDB SEMIS 02100 * 02110 FCC 'MOD' 02120 FCB 3 02130 FCB MFORE 02140 FDB SLASH-CFAOFF 02150 FDB BIF+2 02160 FDB 0 02170 FDB 0 02180 MOD DOCOL see fig-FORTH model 02190 FDB SLAMOD 02210 FDB DROP 02220 FDB SEMIS 02300 * 02310 FCC '*/MOD' 02320 FCB 5 02330 FCB MFORE 02340 FDB MOD-CFAOFF 02350 FDB BIF+2 02360 FDB STARSL-CFAOFF 02370 FDB 0 02380 SSMOD DOCOL see fig-FORTH model 02390 FDB TOR 02400 FDB MSTAR 02410 FDB RFROM 02420 FDB MSLASH 02430 FDB SEMIS 02500 * 02510 FCC '*/' 02520 FCB 2 02530 FCB MFORE 02540 FDB SSMOD-CFAOFF 02550 FDB BIF+2 02560 FDB 0 02570 FDB 0 02580 STARSL DOCOL see fig-FORTH model 02590 FDB SSMOD 02600 FDB SWAP 02610 FDB DROP 02630 FDB SEMIS 02700 * 02710 FCC 'M/MOD' 02720 FCB 5 02730 FCB MFORE 02740 FDB STARSL-CFAOFF 02750 FDB BIF+2 02760 FDB MSTAR-CFAOFF 02770 FDB MESS-CFAOFF 02780 MSMOD DOCOL see fig-FORTH model 02790 FDB TOR 02800 FDB ZERO 02810 FDB R 02820 FDB USLASH ms word 02830 FDB RFROM 02840 FDB SWAP 02850 FDB TOR save high q 02860 FDB USLASH ls word 02870 FDB RFROM double q 02880 FDB SEMIS 02900 * 02910 FCC '+BUF' 02920 FCB 4 02930 FCB MFORE 02940 FDB MSMOD-CFAOFF 02950 FDB BIF+2 02960 FDB 0 02970 FDB 0 02980 ADDBUF LDX <UP 02990 LDD BPBUF+2 02995 ADDD #4 03000 ADDD ,U 03010 CMPD ULIMIT,X 03020 BLO ADDBN 03025 LDD UFIRST,X 03030 ADDBN STD ,U 03040 CMPD UPREV,X 03050 BEQ *+7 03060 LDD #-1 03065 BRA *+5 03070 LDD #0 03080 PSHU D 03090 NEXT 03100 * 03110 FCC 'UPDATE' 03120 FCB 6 03130 FCB MFORE 03140 FDB ADDBUF-CFAOFF 03150 FDB BIF+2 03160 FDB UNTIL-CFAOFF 03170 FDB USER-CFAOFF 03180 UPDATE LDX <UP 03190 LDD [UPREV,X] 03200 ORA #$80 03210 STD [UPREV,X] 03220 NEXT 03300 * 03310 FCC 'EMPTY-BUFFERS' 03320 FCB 13 03330 FCB MFORE 03340 FDB UPDATE-CFAOFF 03350 FDB BIF+2 03360 FDB 0 03370 FDB 0 03380 EMTBUF LDX <UP 03390 LDD ULIMIT,X 03395 SUBD #1 catch odd 03400 PSHS D,Y 03410 LDX UFIRST,X 03420 LDY #0 03430 LDD BPBUF+2 03440 EMTBL CMPX ,S 03445 BHS EMTBE 03450 STY ,X++ update bit 03455 LEAX D,X 03460 CMPX ,S 03465 BHS EMTBE 03470 STY ,X++ term NUL 03475 BRA EMTBL 03480 EMTBE PULS D,Y 03490 NEXT 03500 * 03510 FCC 'DRIVE-OFFSET' 03520 FCB 12 03530 FCB MFORE 03540 FDB EMTBUF-CFAOFF 03550 FDB BIF+2 03560 FDB DRIVE-CFAOFF 03570 FDB DROOT-CFAOFF 03580 DROFFS DO1ARR 03590 FDB 0 low 03600 FDB 4 width 03610 FCB 2 element size 03620 FDB 18*35 drive 0 03630 FDB 18*35 03640 FDB $8000 8 Meg max 03650 FDB $8000 03660 FDB $8000 never a drive 5! 03700 * 03710 FCC 'DRIVE' 03720 FCB 5 03730 FCB MFORE 03740 FDB DROFFS-CFAOFF 03750 FDB BIF+2 03760 FDB 0 03770 FDB 0 03780 DRIVE LDX #DROFFS+7 03800 LDD #0 03810 DRIVL ADDD ,X++ 03820 BMI DRIVX table end? 03830 DEC 1,U 03840 BPL DRIVL 03850 SUBD -2,X back one 03860 DRIVX LDX <UP 03870 STD UOFFS,X 03890 LEAU 2,U 03900 NEXT 04000 * 04000 FCC 'R/W' 04010 FCB 3 04020 FCB MFORE 04030 FDB DRIVE-CFAOFF 04040 FDB BIF+2 04050 FDB 0 04060 FDB 0 04070 RW PSHS Y,U,DP 04080 LDY $C006 control table 04090 LDX #DROFFS+7 04100 LDD 2,U 04110 RWD SUBD ,X++ sectors 04120 BHS RWD 04130 BVC RWR table end? 04140 LDD #6 04150 PSHU D 04160 JMP ERROR 04170 RWR ADDD ,--X back one 04175 PSHS X 04180 PSHU D 04190 LDD #18 sectors/track 04200 PSHU D 04210 DOCOL 04220 FDB SLAMOD 04230 FDB XMACH 04240 PULU D 04250 STB 2,Y track 04260 PULU D 04265 INCB 04270 STB 3,Y sector 04280 PULS D table entry 04290 SUBD #DROFFS+7 04300 ASRB drive # 04310 STB 1,Y 04320 LDD 4,U buffer 04330 STD 4,Y 04340 LDB #2 coco READ 04350 LDX ,U 0? 04360 BNE *+3 04370 INCB coco WRITE 04380 STB ,Y op code 04384 CLRA 04386 TFR A,DP 04390 JSR [$C004] ROM handles timeout 04400 PULS Y,U,DP if IRQ enabled 04420 LEAU 6,U 04430 LDX $C006 04440 LDB 6,X coco status 04450 BEQ RWE 04460 LDX <UP 04470 LDD #0 no disc 04480 STD UWARN,X 04490 LDD #8 04500 PSHU D 04510 JMP ERROR 04520 RWE NEXT 05000 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 05010 FCC '?ERROR' 05020 FCB 6 05030 FCB MFORE 05040 FDB RW-CFAOFF 05050 FDB BIF+2 05060 FDB 0 05070 FDB 0 05080 QERR PULU X 05090 LDD ,U++ 05100 BNE *+4 05110 NEXT 05120 PSHU X 05130 JMP ERROR 05200 * 05210 FCC '?COMP' 05220 FCB 5 05230 FCB MFORE 05240 FDB QERR-CFAOFF 05250 FDB BIF+2 05260 FDB TOR-CFAOFF 05270 FDB QEXEC-CFAOFF 05280 QCOMP LDX <UP 05290 LDB USTATE+1,X 05300 ANDB #SCOMP 05310 BNE QPAIRN 05320 LDD #$11 05330 BRA QPAIRE 05400 * 05410 FCC '?EXEC' 05420 FCB 5 05430 FCB MFORE 05440 FDB QCOMP-CFAOFF 05450 FDB BIF+2 05460 FDB QCST-CFAOFF 05470 FDB QPAIRS-CFAOFF 05480 QEXEC LDX <UP 05490 LDB USTATE+1,X 05500 BEQ QPAIRN 05510 LDD #$12 05520 BRA QPAIRE 05600 * 05610 FCC '?PAIRS' 05620 FCB 6 05630 FCB MFORE 05640 FDB QEXEC-CFAOFF 05650 FDB BIF+2 05660 FDB QLOAD-CFAOFF 05670 FDB QTERM-CFAOFF 05680 QPAIRS PULU D 05690 SUBD ,U++ 05700 BEQ QPAIRN 05710 LDD #$13 05720 QPAIRE PSHU D robbed 05730 JMP ERROR 05740 QPAIRN NEXT robbed 05800 * 05810 FCC '?CSP' 05820 FCB 4 05830 FCB MFORE 05840 FDB QPAIRS-CFAOFF 05850 FDB BIF+2 05860 FDB 0 05870 FDB 0 05880 QCSP LDX <UP 05890 TFR U,D 05900 SUBD UCSP,X 05910 BEQ QPAIRN 05920 LDD #$14 05930 BRA QPAIRE 06000 * 06010 FCC '?LOADING' 06020 FCB 8 06030 FCB MFORE 06040 FDB QCSP-CFAOFF 06050 FDB BIF+2 06060 FDB 0 06070 FDB 0 06080 QLOAD LDX <UP 06090 LDD UBLK,X 06100 BNE QPAIRN 06110 LDD #$16 06120 BRA QPAIRE 06200 * 06210 FCC 'COMPILE' 06220 FCB 7 06230 FCB MFORE 06240 FDB QLOAD-CFAOFF 06250 FDB BIF+2 06260 FDB COLD-CFAOFF 06270 FDB COMPO-CFAOFF 06280 COMP DOCOL 06290 FDB QCOMP 06300 FDB XMACH 06310 COMPIP LDD ,Y++ robbed by IP, 06320 PSHU D 06330 JMP COMMA 06390 * 06410 FCC 'LOOP' 06420 FCB MIMM.OR.MCOMP.OR.4 06430 FCB MFORE 06440 FDB COMP-CFAOFF 06450 FDB BIF+2 06460 FDB KEY-CFAOFF 06470 FDB NUMBER-CFAOFF 06480 LOOP DOCOL see fig-FORTH model 06490 FDB LIT 06500 FDB ('D)*256+'O 06510 FDB QPAIRS 06520 FDB COMP 06530 FDB XLOOP 06540 FDB BACK 06550 FDB SEMIS 06590 * 06610 FCC '+LOOP' 06620 FCB MIMM.OR.MCOMP.OR.5 06630 FCB MFORE 06640 FDB LOOP-CFAOFF 06650 FDB BIF+2 06660 FDB CHS-CFAOFF 06670 FDB COMMA-CFAOFF 06680 PLOOP DOCOL see fig-FORTH model 06690 FDB LIT 06700 FDB ('D)*256+'O 06710 FDB QPAIRS 06720 FDB COMP 06730 FDB XPLOOP 06740 FDB BACK 06750 FDB SEMIS 06790 * 06809 FCC 'LOAD' 06820 FCB 4 06830 FCB MFORE 06840 FDB PLOOP-CFAOFF 06850 FDB BIF+2 06860 FDB 0 06870 FDB 0 06880 LOAD PSHS Y see fig-FORTH model 06890 LDY <UP 06900 LDD UIN,Y 06910 LDX UBLK,Y 06920 PSHS X,D 06930 LDD #0 06940 STD UIN,Y 06950 DOCOL 06960 FDB BPSCR 06970 FDB STAR 06980 FDB BLK 06990 FDB STORE 07000 FDB INTERP 07010 FDB XMACH 07020 PULS D,X 07030 STD UIN,Y 07040 STX UBLK,Y 07050 PULS Y 07060 NEXT 07090 * 07110 FCC '<BUILDS' 07120 FCB MCOMP.OR.7 07130 FCB MFORE 07140 FDB LOAD-CFAOFF 07150 FDB BIF+2 07160 FDB 0 07170 FDB 0 07180 BUILDS DOCOL see fig-FORTH model 07190 FDB ZERO 07200 FDB CONST 07210 FDB SEMIS 07290 * 07310 FCC 'DOES>' 07320 FCB MCOMP.OR.5 07330 FCB MFORE 07340 FDB BUILDS-CFAOFF 07350 FDB BIF+2 07360 FDB 0 07370 FDB 0 07380 DOES LDX <UP 07430 LDX UCURR,X 07440 LDD ADOES,PCR 07450 STD CFAOFF,X 07460 STY PFAOFF,X 07470 PULS Y 07480 NEXT 07490 ADOES JSR <XDOES 07790 * 07810 FCC ';CODE' 07820 FCB MCOMP.OR.MIMM.OR.5 07830 FCB MFORE 07840 FDB DOES-CFAOFF 07850 FDB BIF+2 07860 FDB SEMI-CFAOFF 07870 FDB SEMIS-CFAOFF 07880 SCODE DOCOL not fig 07890 FDB QCSP 07900 FDB COMP 07910 FDB XSCODE 07915 FDB LBRAK 07920 FDB ASMBLR 07930 FDB STOCSP to check later 07940 FDB SEMIS 07950 * something else must SMUDGE 07960 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (See BIF/ASM) 00030 * 00900 FCC 'IP,' 00910 FCB MCOMP.OR.3 00920 FCB MFORE 00930 FDB SCODE-CFAOFF 00940 FDB BIF+2 00950 FDB 0 00960 FDB 0 00970 IPCOM JMP COMPIP 00980 * 01000 FCC '?STACK' 01010 FCB 6 01020 FCB MFORE 01030 FDB IPCOM-CFAOFF 01040 FDB BIF+2 01050 FDB 0 01060 FDB 0 01070 QSTACK LDX <UP 01080 CMPS UR0,X 01090 BLS *+6 01100 QSTACU LDB #$0A 01110 BRA QSTERR 01115 LDD [UR0,X] hole 01116 BNE QSTACU 01120 CMPS US0,X 01130 BHI *+6 01140 QSTACO LDB #$0B 01150 BRA QSTERR 01155 LDD [US0,X] hole 01156 BNE QSTACE 01160 CMPU US0,X 01170 BLS *+6 01180 QSTACE LDB #1 01190 BRA QSTERR 01240 CMPU UDP,X 01260 BLS *+4 01270 NEXT 01280 LDB #7 01290 QSTERR CLRA 01300 PSHU D 01310 JMP ERROR 01320 * 01400 FCC 'BUFFER' 01410 FCB 6 01420 FCB MFORE 01430 FDB QSTACK-CFAOFF 01440 FDB BIF+2 01450 FDB BLK-CFAOFF 01460 FDB CCOMMA-CFAOFF 01470 BUFFER PSHS Y 01480 LDY <UP 01490 LDD UUSE,Y 01495 PSHS D save it 01500 PSHU D 01510 DOCOL 01520 FDB ADDBUF 01530 FDB ZBR prev? 01540 FDB -6 01550 FDB XMACH 01560 PULU D 01570 STD UUSE,Y new use 01580 LDX ,S buffer 01590 LDD ,X block 01600 BPL BUFNW 01610 ANDA #$7F mask update 01620 LEAX 2,X data 01630 PSHU D,X 01640 LDD #0 write 01650 PSHU D 01660 DOCOL 01670 FDB RW 01680 FDB XMACH 01690 BUFNW PULU D new block 01700 PULS X 01710 STD ,X 01720 STX UPREV,Y 01730 LEAX 2,X data 01740 PSHU X 01750 PULS Y 01760 NEXT 01790 * 01800 FCC 'BLOCK' 01810 FCB 5 01820 FCB MFORE 01830 FDB BUFFER-CFAOFF 01840 FDB BIF+2 01850 FDB 0 01860 FDB BS-CFAOFF 01870 BLOCK PSHS Y 01880 LDY <UP 01890 LDD UOFFS,Y 01900 ADDD ,U 01910 STD ,U 01920 LDX UPREV,Y 01930 BLOKL LDD ,X block 01940 ANDA #$7F mask update 01950 CMPD ,U this buffer? 01960 BEQ BLOKFD 01970 PSHU X 01980 DOCOL 01990 FDB ADDBUF 02000 FDB TBR 02010 FDB BLOKLE-*-2 02020 FDB DROP buffer 02030 FDB DUP block 02040 FDB BUFFER lru 02050 FDB OVER 02060 FDB OVER 02070 FDB SWAP 02080 FDB MONE 02090 FDB RW get block 02100 FDB SUB2 02110 BLOKLE FDB XMACH 02120 PULU X buffer 02130 BRA BLOKL 02140 BLOKFD STX UPREV,Y 02150 LEAX 2,X data 02160 STX ,U 02165 PULS Y 02170 NEXT 02180 * 02200 FCC '(LINE)' 02210 FCB 6 02220 FCB MFORE 02230 FDB BLOCK-CFAOFF 02240 FDB BIF+2 02250 FDB PINSTA-CFAOFF 02260 FDB XLOOP-CFAOFF 02270 XLINE DOCOL see fig-FORTH model 02280 FDB TOR 02290 FDB CPERL line width 02300 FDB BPBUF 02310 FDB SSMOD byte in sector 02320 FDB RFROM 02330 FDB BPSCR 02340 FDB STAR base of screen 02350 FDB ADD 02360 FDB BLOCK 02370 FDB ADD byte of buffer 02380 FDB CPERL 02390 FDB SEMIS 02400 * 02500 FCC '.LINE' 02510 FCB 5 02520 FCB MFORE 02530 FDB XLINE-CFAOFF 02540 FDB BIF+2 02550 FDB DOTQ-CFAOFF 02560 FDB DOTR-CFAOFF 02570 DOTLIN DOCOL see fig-FORTH model 02580 FDB XLINE 02590 FDB DTRAIL 02600 FDB TYPE 02610 FDB SEMIS 02690 * 02700 FCC 'SPACES' 02710 FCB 6 02720 FCB MFORE 02730 FDB DOTLIN-CFAOFF 02740 FDB BIF+2 02750 FDB 0 02760 FDB 0 02770 SPACES LDD ,U see fig-FORTH model 02780 BGT SPACEY 02783 LEAU 2,U 02785 NEXT 02790 SPACEY DOCOL 02800 FDB ZERO 02810 FDB XDO 02820 FDB SPACE 02830 FDB XLOOP 02840 FDB -6 02850 FDB SEMIS 02890 * 02900 FCC '<#' 02910 FCB 2 02920 FCB MFORE 02930 FDB SPACES-CFAOFF 02940 FDB BIF+2 02950 FDB 0 02960 FDB BUILDS-CFAOFF 02970 BEGHSH LDX <UP 02980 LDD UPAD,X 02990 STD UHLD,X 03000 NEXT 03090 * 03100 FCC '#>' 03110 FCB 2 03120 FCB MFORE 03130 FDB BEGHSH-CFAOFF 03140 FDB BIF+2 03150 FDB STORE-CFAOFF 03160 FDB TICK-CFAOFF 03170 ENDHSH LDX <UP 03180 LDD UPAD,X 03190 SUBD UHLD,X 03200 STD ,U count 03210 LDD UHLD,X 03220 STD 2,U 03230 NEXT 03290 * 03300 FCC 'SIGN' 03310 FCB 4 03320 FCB MFORE 03330 FDB ENDHSH-CFAOFF 03340 FDB BIF+2 03350 FDB SCR-CFAOFF 03360 FDB 0 03370 SIGN DOCOL see fig-FORTH model 03380 FDB ROT 03390 FDB ZLESS 03400 FDB ZBR 03410 FDB SIGNP-*-2 03420 FDB LIT 03430 FDB $2D 03440 FDB HOLD 03450 SIGNP FDB SEMIS 03490 * 03500 FCC '#' 03510 FCB 1 03520 FCB MFORE 03530 FDB SIGN-CFAOFF 03540 FDB BIF+2 03550 FDB 0 03560 FDB 0 03570 HASH DOCOL see fig-FORTH model 03580 FDB BASE 03590 FDB FETCH 03600 FDB MSMOD 03610 FDB ROT 03620 FDB XMACH 03630 LDB 1,U 03640 CMPB #9 03650 BLS HASHX+4 03660 CMPB #'A-'Z+10 03670 BLS HASHX+2 03680 HASHX ADDB #'a-'Z-1 03690 ADDB #'A-'9-1 03700 ADDB #'0 03710 STB 1,U 03720 DOCOL 03730 FDB HOLD 03740 FDB SEMIS 03790 * 03800 FCC '#S' 03810 FCB 2 03820 FCB MFORE 03830 FDB HASH-CFAOFF 03840 FDB BIF+2 03850 FDB 0 03860 FDB 0 03870 HASHS DOCOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆÇÇÁÅ
2+Ä ÂÈÈÃÇÄÄÆ!"É$Â&'Ç)*Â,-3/0Á2ÉÈÿÿÿÿ9:;Éÿÿÿÿÿÿÿÿÿ0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BIF ASMÿöBIFU INCÿEBIF M ÿ×BIFDP ASMÿBIFST ASMÿðBIFB ASMÿ êBIF1 ASMÿ ¤BIF1B ASMÿ]BIF2 ASMÿ˜BIF2B ASMÿ&BIF3 ASMÿ+BIF3B ASMÿvBIF4 ASMÿÊBIF4B ASMÿ©BIF5 ASMÿ BIF5B ASMÿ#|BIF6 ASMÿ%BIF6B ASMÿ(BIF6809 BIN+dBIF7 ASMÿ.éBIF7B ASMÿ1IF6809 BIN3µ#µBIF6809CBIN8µ#µIFD1P BIN:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿL 03880 FDB HASH 03890 FDB XMACH 03900 LDD 2,U 03910 BNE HASHS 03920 LDD ,U 03930 BNE HASHS 03940 NEXT 03950 * 04000 FCC 'D.R' 04010 FCB 3 04020 FCB MFORE 04030 FDB HASHS-CFAOFF 04040 FDB BIF+2 04050 FDB 0 04060 FDB 0 04070 DDOTR DOCOL see fig-FORTH model 04080 FDB TOR 04090 FDB SWAP save sign 04100 FDB OVER 04110 FDB DABS 04120 FDB BEGHSH 04130 FDB HASHS 04140 FDB SIGN 04150 FDB ENDHSH 04160 FDB RFROM field width 04170 FDB OVER 04180 FDB SUB 04190 FDB SPACES <0 => no spaces 04200 FDB TYPE 04210 FDB SEMIS 04220 * 04230 FCC 'D.' 04240 FCB 2 04250 FCB MFORE 04260 FDB DDOTR-CFAOFF 04270 FDB BIF+2 04280 FDB 0 04290 FDB DDOTR-CFAOFF 04300 DDOT DOCOL see fig-FORTH model 04310 FDB ZERO 04320 FDB DDOTR 04330 FDB SPACE 04340 FDB SEMIS 04350 * 04360 FCC '.R' 04370 FCB 2 04380 FCB MFORE 04390 FDB DDOT-CFAOFF 04400 FDB BIF+2 04410 FDB 0 04420 FDB 0 04430 DOTR DOCOL see fig-FORTH model 04440 FDB TOR 04450 FDB STOD 04460 FDB RFROM 04470 FDB DDOTR 04480 FDB SEMIS 04490 * 04500 FCC '.' 04510 FCB 1 04520 FCB MFORE 04530 FDB DOTR-CFAOFF 04540 FDB BIF+2 04550 FDB DDUP-CFAOFF 04560 FDB DOTLIN-CFAOFF 04570 DOT DOCOL see fig-FORTH model 04580 FDB STOD 04590 FDB DDOT 04600 FDB SEMIS 04610 * 04620 FCC '?' 04630 FCB 1 04640 FCB MFORE 04650 FDB DOT-CFAOFF 04660 FDB BIF+2 04670 FDB TOVID-CFAOFF 04680 FDB TNULL-CFAOFF 04690 QDOT LDD [,U++] 04700 PSHU D 04710 BRA DOT 04720 * 04800 FCC 'MESSAGE' 04810 FCB 7 04820 FCB MFORE 04830 FDB DOTLIN-CFAOFF 04840 FDB BIF+2 04850 FDB MAX-CFAOFF 04860 FDB 0 04870 MESS DOCOL see fig-FORTH model 04880 FDB WARN 04890 FDB FETCH print text? 04893 FDB ONE 04896 FDB AND 04900 FDB ZBR 04910 FDB MESSN-*-2 04920 FDB DDUP not 0? 04930 FDB ZBR 04940 FDB MESSX-*-2 04950 FDB LIT 04960 FDB 4 04970 FDB OFFSET 04980 FDB FETCH 04990 FDB BPSCR 05000 FDB SLASH screen offset 05010 FDB SUB 05020 FDB DOTLIN 05030 FDB BRANCH 05040 FDB MESSX-*-2 05050 MESSN FDB XDOTQ 05060 FCB 6 05070 FCC 'MSG # ' 05080 FDB DOT 05090 MESSX FDB SEMIS 05190 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (See BIF/ASM) 00030 * 05200 FCC '(ABORT)' 05210 FCB 7 05220 FCB MFORE 05230 FDB MESS-CFAOFF 05240 FDB BIF+2 05250 FDB XDOTQ-CFAOFF 05260 FDB XDO-CFAOFF 05270 IABORT DOCOL see fig-FORTH model 05280 FDB ABORT 05290 FDB SEMIS 05390 * 05400 FCC 'ERROR' 05410 FCB 5 05420 FCB MFORE 05430 FDB IABORT-CFAOFF 05440 FDB BIF+2 05450 FDB ERASE-CFAOFF 05460 FDB EXEC-CFAOFF 05470 ERROR DOCOL 05480 FDB WORDPD last WORD 05490 FDB COUNT 05500 FDB TYPE 05510 FDB XDOTQ 05520 FCB 3 05530 FCC ' ? ' 05540 FDB MESS 05550 FDB WARN 05560 FDB FETCH 05570 FDB ZLESS 05580 FDB ZBR 05590 FDB 2 05600 FDB IABORT 05610 FDB SPSTO 05620 FDB IN 05630 FDB FETCH 05640 FDB BLK 05650 FDB FETCH 05660 FDB QUIT 05670 FDB SEMIS 05680 * 05700 FCC 'EDITOR' 05710 FCB MIMM.OR.6 05720 FCB MFORE 05730 FDB ERROR-CFAOFF 05740 FDB BIF+2 parent voc 05750 FDB 0 05760 FDB 0 05770 EDITOR DOVOC 05780 FDB EBLK-CFAOFF (NFA) 05790 * 05800 FCC 'QSYNC' 05810 FCB 5 05820 FCB MFORE 05830 FDB EDITOR-CFAOFF 05840 FDB EDITOR+2 05850 FDB 0 05860 FDB 0 05870 QSYNC LDX <UP 05880 LDB URNUM+1,X 05890 LDA #4 05900 STD $88 05910 NEXT 05990 * 06000 FCC 'EBLK' 06010 FCB 4 06020 FCB MFORE 06030 FDB QSYNC-CFAOFF 06040 FDB EDITOR+2 06050 FDB CURSOR-CFAOFF 06060 FDB QDUMP-CFAOFF 06070 EBLK DOUSER 06080 FCB UEBLK 06090 * 06000 FCC 'CURSOR' 06010 FCB 6 06020 FCB MFORE 06030 FDB QSYNC-CFAOFF 06040 FDB EDITOR+2 06050 FDB 0 06060 FDB 0 06070 CURSOR DOCOL 06080 FDB EBLK 06090 FDB FETCH 06100 FDB BLOCK 06110 FDB RNUM 06120 FDB FETCH 06130 FDB ADD 06140 FDB SEMIS 06190 * 06200 FCC 'QDUMP' 06210 FCB 5 06220 FCB MFORE 06230 FDB CURSOR-CFAOFF 06240 FDB EDITOR+2 06250 FDB QARROW-CFAOFF 06260 FDB QUICK-CFAOFF 06270 QDUMP PSHS Y 06280 PULU Y 06290 LDX #$400 screen 06300 CLRA 06310 QDUMPL LDB ,Y+ 06320 STB ,X+ 06330 DECA 06340 BNE QDUMPL 06350 PULS Y 06360 NEXT 06390 * 06400 FCC 'QARROW' 06410 FCB 6 06420 FCB MFORE 06430 FDB QDUMP-CFAOFF 06440 FDB EDITOR+2 06450 FDB 0 06460 FDB 0 06470 QARROW LDB 1,U 06480 LDA #4 06490 LEAX QTBL,PCR 06500 QAROL CMPB ,X+ 06510 BEQ QARODO 06520 DECA 06530 BNE QAROL 06540 CMPB #21 shifted BS? 06550 BNE QAROX 06552 DOCOL 06554 FDB CURSOR 06556 FDB XMACH 06560 LDD #$2060 spaces 06565 STA [,U++] buffer 06570 STB [$88] video 06580 LDB #-1 06590 BRA *+4 06600 QARODO LDB 3,X 06610 LDX <UP 06620 ADDB URNUM+1,X 06630 STB URNUM+1,X 06650 LDD #0 06660 STD ,U 06670 QAROX NEXT 06700 QTBL FCB '^ up 06710 FCB 10 down 06720 FCB 8 back 06730 FCB 9 front 06740 FCB -32 offsets 06750 FCB 32 06760 FCB -1 06770 FCB 1 06790 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 01000 FCC '(NUMBER)' 01010 FCB 8 01020 FCB MFORE 01030 FDB QARROW-CFAOFF 01040 FDB BIF+2 01050 FDB 0 01060 FDB PREF-CFAOFF 01070 INUMB PSHS Y see fig-FORTH model 01080 PULU Y adr 01085 LDX <UP 01090 INUMBL LDB ,Y+ ch 01092 CLRA 01094 PSHU D 01096 LDD UBASE,X 01100 PSHU D 01110 DOCOL 01120 FDB DIGIT 01130 FDB ZBR 01140 FDB INUMBE-*-2 01150 FDB SWAP accm ms word 01160 FDB BASE 01180 FDB FETCH 01190 FDB USTAR shift in base 01200 FDB DROP ls word is digit 01210 FDB ROT accm ls word 01220 FDB BASE 01230 FDB FETCH 01240 FDB USTAR shift in base 01250 FDB DADD accumulate 01260 FDB XMACH adjust dpl 01270 LDX <UP 01280 LDD UDPL,X 01290 BMI INUMBL 01300 ADDD #1 01310 STD UDPL,X 01320 BRA INUMBL 01330 INUMBE FDB XMACH 01340 LEAY -1,Y back up 01350 PSHU Y adr 01355 PULS Y 01360 NEXT 01390 * 01400 FCC 'NUMBER' 01410 FCB 6 01420 FCB MFORE 01430 FDB INUMB-CFAOFF 01440 FDB BIF+2 01450 FDB MIN-CFAOFF 01460 FDB OVER-CFAOFF 01470 NUMBER PULU X 01475 LEAX 1,X skip ct 01480 LDB ,X <0? 01490 SUBB #'- 01500 BNE *+4 01510 LEAX 1,X 01520 CLRA 01530 PSHU D 01540 CLRB 01550 PSHU D double 0 01560 PSHU D 01570 PSHU X adr 01580 LDD #-1 clear DPL 01590 NUMBA LDX <UP 01600 STD UDPL,X 01610 DOCOL 01620 FDB INUMB 01630 FDB XMACH 01640 LDX ,U end ch 01650 LDB ,X ascii NUL? 01660 BEQ NUMBQ 01670 CMPB #': double? 01680 BEQ NUMBD 01690 CMPB #'- 01700 BLO NUMBE 01710 CMPB #'/ 01720 BHI NUMBE 01730 NUMBD LEAX 1,X past dec pt 01740 STX ,U 01750 LDD #0 set DPL 01760 BRA NUMBA 01770 NUMBE LDD #0 01780 PSHU D 01790 JMP ERROR 01800 NUMBQ LEAU 2,U valid, drop 01810 DOCOL 01830 FDB ROT <0? 01840 FDB TBR 01850 FDB 2 01860 FDB DMINUS 01870 FDB SEMIS 01890 * 01900 FCC 'WORDPAD' 01910 FCB 7 01920 FCB MFORE 01930 FDB NUMBER-CFAOFF 01940 FDB BIF+2 01950 FDB 0 01960 FDB 0 01970 WORDPD DOUCON 01980 FCB UWP 01990 * 02000 FCC 'WORD' 02010 FCB 4 02020 FCB MFORE 02030 FDB WORDPD-CFAOFF 02040 FDB BIF+2 02050 FDB WHILE-CFAOFF 02060 FDB BCOMP-CFAOFF 02070 WORD PSHS Y 02075 LDY <UP 02080 LDD UBLK,Y terminal? 02090 BEQ WORDK buffer 02100 PSHU D 02110 DOCOL 02120 FDB BLOCK 02130 FDB XMACH 02140 PULU D 02150 BRA *+4 UTIB < 16! 02160 WORDK LDD UTIB,Y 02170 ADDD UIN,Y parse at 02180 PULU X ch 02190 TFR D,Y save 02200 PSHU X,Y (swap) 02205 DOCOL 02210 FDB ENCLOS 02215 FDB XMACH 02220 PSHS Y start at 02221 LDD 2,U symbol at 02222 SUBD ,S++ delimiter count 02223 ADDD ,U length 02225 LDX <UP 02226 ADDD UIN,X 02227 STD UIN,X update 02230 PULU D length 02240 CMPD #NLMASK 02250 BLS *+5 clip 02260 LDD #NLMASK 02270 LDY UWP,X 02280 STB ,Y+ count 02290 CLR B,Y trailing NUL 02300 PSHU D,Y dest & ct 02330 PULS Y 02340 DOCOL 02350 FDB CMOVE copy 02360 FDB SEMIS 02490 * 02500 FCC 'BS' 02510 FCB 2 02520 FCB MFORE 02530 FDB WORD-CFAOFF 02540 FDB BIF+2 02550 FDB BRANCH-CFAOFF 02560 FDB 0 02570 BS DOUCON 02580 FCB UBS 02590 * 02600 FCC 'EXPECT' 02610 FCB 6 02620 FCB MFORE 02630 FDB BS-CFAOFF 02640 FDB BIF+2 02650 FDB ERROR-CFAOFF 02660 FDB FILL-CFAOFF 02670 EXPECT PSHS Y 02680 LDD ,U count 02690 LDY 2,U buffer 02700 SUBD #1 for NUL 02710 BLT EXPE0+2 02720 BEQ EXPE0 02730 LEAX D,Y 02740 STX ,U limit 02750 EXPEL DOCOL 02760 FDB KEY 02770 FDB XMACH 02780 LDB 1,U 02790 LDX <UP 02800 CMPB UBS+1,X 02810 BNE EXPECR 02820 CMPY 4,U beginning? 02830 BLS EXPEM0 02840 LEAY -1,Y 02850 BRA EXPEM 02860 EXPEM0 CLR 1,U to emit 02870 BRA EXPEM 02880 EXPECR CMPB #$0D 02890 BNE EXPEPT 02900 STY 2,U terminate 02910 BRA EXPEM 02913 EXPEPT CMPB #$20 printable? 02916 BLO EXPEM0 02920 STB ,Y+ store ch 02930 EXPEM DOCOL 02940 FDB EMIT 02950 FDB XMACH 02960 CMPY ,U 02970 BLO EXPEL 02980 EXPE0 CLR ,Y NUL term 02990 LEAU 4,U 03000 PULS Y 03010 NEXT 03090 * 03600 TWID EQU 128 width of a terminal line 03605 FCC 'QUERY' 03610 FCB 5 03620 FCB MFORE 03630 FDB EXPECT-CFAOFF 03640 FDB BIF+2 03650 FDB LOOP-CFAOFF 03660 FDB SWAP-CFAOFF 03670 QUERY LDX <UP 03680 LDD #0 03690 STD UIN,X 03700 LDD #TWID 03710 LDX UTIB,X 03720 PSHU D,X 03730 DOCOL 03740 FDB EXPECT 03750 FDB SEMIS 03790 * 03795 FCB 0 ; NEEDED 03800 FCB MIMM.OR.0 03810 FCB MFORE 03820 FDB QUERY-CFAOFF 03830 FDB BIF+2 03840 FDB 0 03850 FDB 0 03860 NUBLK LDX <UP 03870 LDD UBLK,X 03880 BEQ NUBLT 03890 ADDD #1 03900 STD UBLK,X 03910 LDD #0 03920 STD UIN,X 03930 LDD BPSCR+2 2^n 03940 DECB 03950 ANDB UBLK+1,X end of screen? 03960 BNE NUBLT+2 03970 DOCOL 03980 FDB QEXEC 03990 FDB XMACH 04000 NUBLT PULS Y end interp 04010 NEXT 04090 * 04100 FCC 'FIND' 04110 FCB 4 04120 FCB MFORE 04130 FDB NUBLK-CFAOFF 04140 FDB BIF+2 04150 FDB EXPECT-CFAOFF 04160 FDB HERE-CFAOFF 04170 FIND LDD 2,U 04180 ADDD #1 past ct 04190 STD 2,U 04200 LDD ,U 04210 FINDL LDX 2,U 04220 PSHU D,X 04230 DOCOL 04240 FDB PFIND 04250 FDB XMACH 04260 LDD ,U flag 04270 BNE FINDF 04290 LDX 4,U vocabulary 04300 LDD GFAOFF-PFAOFF,X parent 04305 CMPD 4,U root voc? 04310 BEQ FINDF 04315 LEAU 4,U 04320 STD ,U 04330 BRA FINDL 04360 FINDF LDD [2,U] 04365 LEAU 4,U entry 04370 STD 2,U 04380 NEXT 04390 * 04400 FCC '-DFIND' 04410 FCB 6 04420 FCB MFORE 04430 FDB FIND-CFAOFF 04440 FDB BIF+2 04450 FDB 0 04460 FDB 0 04470 DDFIND DOCOL 04480 FDB DROOT defs first 04490 FDB ROOT context next 04500 DFIND1 FDB BL 04510 FDB WORD name in buf 04520 FDB FETCH vocab2 04530 FDB SWAP 04540 FDB FETCH vocab1 04550 FDB OVER 04560 FDB OVER 04570 FDB EQ same? 04580 FDB ZBR 04590 FDB 6 04600 FDB DROP 04610 FDB BRANCH 04620 FDB DFIND2-*-2 04630 FDB WORDPD buf 04640 FDB SWAP 04650 FDB FIND 1st 04660 FDB OVER 04670 FDB ZBR 04680 FDB 6 04690 FDB ROT 04700 FDB DROP 04710 FDB SEMIS 04720 FDB DROP 04730 FDB DROP 04740 DFIND2 FDB WORDPD 04750 FDB SWAP 04760 FDB FIND 2nd 04770 FDB SEMIS 04790 * 04800 FCC '-IFIND' 04810 FCB 6 04820 FCB MFORE 04830 FDB DDFIND-CFAOFF 04840 FDB BIF+2 04850 FDB 0 04860 FDB 0 04870 DIFIND DOCOL 04880 FDB ROOT context first 04890 FDB DROOT defs next 04900 FDB BRANCH 04910 FDB DFIND1-*-2 05190 * * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 05200 FCC 'NAME,' 05210 FCB 5 05220 FCB MFORE 05230 FDB DIFIND-CFAOFF 05240 FDB BIF+2 05250 FDB 0 05260 FDB 0 05270 NCOMMA DOCOL 05280 FDB WORDPD 05300 FDB COUNT 05310 FDB TOR 05330 FDB HERE 05340 FDB R 05350 FDB ALLOT 05360 FDB R 05370 FDB CMOVE name 05380 FDB HERE node 05390 FDB RFROM 05400 FDB SEMIS 05490 * 05500 FCC 'FORE-MARK' 05510 FCB 9 05520 FCB MFORE 05530 FDB NCOMMA-CFAOFF 05540 FDB BIF+2 05550 FDB FIRST-CFAOFF 05560 FDB FORGET-CFAOFF 05570 FOREMK LDX <UP 05580 LDD UFORE,X 05590 BEQ FOREMN 05600 LDX UCURR,X 05610 LDB 1,X 05620 ORB #MFORE 05630 STB 1,X 05640 FOREMN NEXT 05690 * 05700 FCC '(INSTALL)' 05710 FCB MCOMP.OR.9 05720 FCB MFORE 05730 FDB DIFIND-CFAOFF 05740 FDB BIF+2 05750 FDB 0 05760 FDB 0 05770 PINSTA LDX ,U vocab 05772 BNE PINSTV 05774 LDD #$18 05776 PSHU D 05778 JMP ERROR 05780 PINSTV PSHS Y 05784 LDY 2,U nfa 05788 LDB ,Y 05792 ANDB #NLMASK 05796 TFR B,A 05800 NEGA 05804 LEAY A,Y name 05808 DECA for NUL 05812 LEAS A,S allocate 05816 CLRA 05820 STA B,S term 05824 PSHU Y 05828 PSHU D,S 05832 PSHS B mark 05836 DOCOL 05840 FDB CMOVE 05844 FDB XMACH 05848 LDX ,U vocab 05852 LEAY 1,S 05856 PINSTL PSHU X,Y 05860 DOCOL 05864 FDB PFIND slot? 05868 FDB XMACH 05872 LDD ,U++ flag 05876 BEQ PINSTI 05880 LDX [,U++] old nfa 05884 CMPX #NUBLK-CFAOFF 05888 BNE *+7 05892 LDD #$1C 05896 BRA PINSTV-5 05900 LDB ,X 05904 ORB #MHID hide old 05908 STB ,X 05912 LEAX RTOFF,X fake voc 05916 BRA PINSTL 05920 PINSTI PULS B 05924 INCB 05928 LEAS B,S 05932 LDX ,U insert point 05936 BNE PINSTG 05940 LDD #$19 05944 BRA PINSTV-5 05948 PINSTG LDD 2,U vocab 05952 LDY 4,U nfa 05956 STY ,X link in 05960 STD GFAOFF,Y 05964 PINSTX LEAU 6,U 05970 PULS Y 05980 NEXT 06290 * 06300 FCC '0!' 06310 FCB 2 06320 FCB MFORE 06330 FDB PINSTA-CFAOFF 06340 FDB BIF+2 06350 FDB 0 06360 FDB 0 06370 INULL LDD #0 06380 STD >0 06390 NEXT 06395 * 06400 FCC '?0' 06410 FCB 2 06420 FCB MFORE 06430 FDB INULL-CFAOFF 06440 FDB BIF+2 06450 FDB 0 06460 FDB 0 06470 TNULL LDD >0 06480 BNE *+4 06490 NEXT 06500 LDD #5 06510 PSHU D 06520 LDX <UP 06530 LDA UWARN,X 06540 ORA #$80 abort 06550 STA UWARN,X 06560 JMP ERROR 06590 * 07000 FCC 'QUICK' 07010 FCB 5 07020 FCB MFORE 07030 FDB TNULL-CFAOFF 07040 FDB EDITOR+2 07050 FDB QSYNC-CFAOFF 07060 FDB 0 07070 QUICK PSHS Y 07080 LDY <UP 07090 LDD UEBLK,Y 07100 LDX URNUM,Y 07110 PSHS D,X nest 07120 PULU D 07130 STD UEBLK,Y 07140 LDD #0 07150 STD URNUM,Y 07160 DOCOL 07170 FDB CURSOR 07180 FDB QDUMP fill screen 07190 FDB QSYNC 07200 QUICKL FDB KEY 07210 FDB XMACH 07220 LDB 1,U 07230 CMPB #3 break? 07240 BEQ QUICKB 07250 DOCOL 07260 FDB QARROW 07270 FDB QSYNC 07280 FDB CURSOR 07290 FDB XMACH 07300 LDD 2,U 07310 BNE QUICKC 07320 LDB [,U++] from buffer 07330 BRA QUICKE 07340 QUICKC CMPB #'\ 07350 BNE *+10 07360 DOCOL 07370 FDB KEY literal 07380 FDB XMACH 07390 PULU D 07400 STB [,U++] in buffer 07410 INC URNUM+1,Y bump 07420 LDA [UPREV,Y] update 07430 ORA #$80 07440 STA [UPREV,Y] 07450 QUICKE CLRA 07460 STD ,U 07470 DOCOL 07480 FDB EMIT 07485 FDB QSYNC 07490 FDB BRANCH 07500 FDB QUICKL-*-2 07510 QUICKB LEAU 2,U 07520 PULS D,X un-nest 07530 STD UEBLK,Y 07540 STX URNUM,Y 07550 PULS Y 07560 NEXT 07570 * 07800 FCC 'NODE.' 07810 FCB 5 07820 FCB MFORE 07830 FDB QUICK-CFAOFF 07840 FDB BIF+2 07850 FDB 0 07860 FDB 0 07870 NDOT DOCOL 07880 FDB DUP 07890 FDB IDDOT 07900 FDB SPACE 07910 FDB ZERO 07920 FDB DDOT 07930 FDB CR 07940 FDB QTERM 07943 FDB DUP 07945 FDB ZLESS break? 07950 FDB ZBR 07955 FDB 4 07960 FDB DROP 07965 FDB KEY 07970 FDB SEMIS 07990 * 08000 FCC 'VISIT' 08010 FCB 5 08020 FCB MFORE 08030 FDB NDOT-CFAOFF 08040 FDB BIF+2 08050 FDB 0 08060 FDB 0 08070 VISIT PSHS Y 08080 LDY <UP 08090 LDX UVMK,Y save 08100 PSHS D,X allocate 08110 STS UVMK,Y 08120 LDX ,U++ 08130 PULU D 08140 BEQ VISITX vocab 08150 LDX ,X 08160 BEQ VISITX 08170 ADDD #CFAOFF function 08180 STD ,S 08190 VISITL PSHS X 08200 CMPS US0,Y overflow? 08210 BHI *+7 08220 LDB #$0B 08230 JMP QSTERR 08240 LDX LFTOFF,X 08250 VISITR BNE VISITL 08260 CMPS UVMK,Y 08270 BHS VISITX 08280 LDX ,S node 08290 LDD [UVMK,Y] function 08300 PSHU D,X 08310 DOCOL 08320 FDB EXEC 08330 FDB QSTACK 08340 FDB XMACH 08343 LDD ,U++ 08346 BMI VISITX terminate? 08350 PULS X 08360 LDX RTOFF,X 08370 BRA VISITR 08375 VISITX LDS UVMK,Y 08380 PULS D,X 08390 STX UVMK,Y 08400 PULS Y 08410 NEXT 08490 * 08500 FCC 'VLIST' 08510 FCB 5 08520 FCB MFORE 08530 FDB VISIT-CFAOFF 08540 FDB EDITOR+2 08550 FDB VISIT-CFAOFF 08560 FDB VOCAB-CFAOFF 08570 VLIST DOCOL 08580 FDB LIT 08590 FDB NDOT-CFAOFF 08600 FDB ROOT 08610 FDB FETCH 08620 FDB VISIT 08630 FDB SEMIS 08690 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿu
3+®ä¯än±ìñ6n±56n±æñOÓ6n±5ìÄ£„£%Ì 6~+4¦=íÄ5æ=˜«ÄæA00‹¯Än±žæñOì‹6n±ž5ín±®äì6¯än±5쁮6n±!à~:~æh 4ŒzYyUzWz­4ß4à2ô{p{- {ð€COLD€2ô1yRqì<íˆì,í
4+ì.í ì¨ííˆ6Ì+N6
5+Ì3 6~ë46ž®Á'?ì„';£*#Ìí„ /Ì4ì'£*#Ìí 4ì'£*" áÌí®á&Ø5¶ÎzW4P4 Ì‹Ž®¤ŸÎyUÌý9WARM€02ô0ɸ1ŒÎRì"í„íˆ ì$íì>íˆ(ì&íì*í1¨ì"íˆíˆ"ì$íˆì&íˆì(íˆíˆ$íˆ&ì*íˆÌíˆÌí˜픆*1ˆ*ç J&û5ï
6+%•3:@€Ü2ôXìÔíÄn±!€K2ô-Õ ¨ìBíÔ3Dn±LITƒ€\2ôì¡6n±DLIT„€q2ôì¡®¡6n±EXECUTE‡€…2ô®Á'n„Ì 6~+1BRANCH‡€ž2ôìÁ&1"n±BRANCH†€½2ôì¡1«n±0BRANCH‡€Õ2ôìÁ'å1"n±(LOOP)†€ì2ôÌãäíä£b-Æ1"2dn±(+LOOP)‡€2ôìÁ*Ýãäíä£b.£ Û(DO)€&2ô74n±I€B2ô®#0ìä6n±J€S2ô()ìd6n±DIGIT€d2ô ×]æCÁ9#ÁA% ÁZ#
7+Áa%Áz"ÀÀÀ0áA$
8+OíBÌÿÿíÄn±3BÌ õ(FIND)€y2ô*ó"ÕìÄ'
9+u"ß3B®Ô'æ„Ä '0¯Ä èŽÿÿìįÄíBn±ENCLOSE€º2ô%‹®Bæ€'áA'ø0¯Bæ€'áA&øƒ£BíÄn±LITERALG€ò2ôq'”Ì{í¡7í¡¯ 5 ~+žæˆ9ÄÀ5&n±4 ® DLITERALH€$2ô…AØ̏í¡7 ÁEMIT€]2ôœò7˜_4h›­Ÿ 5hn±KEY€v2ô W4h_†Ï›žˆæ„§„­Ÿ 'úç„_&S‰5h6n±?TERMINAL €”2ô(<4h_›­Ÿ  ÔCR€Ê2ô"‰Æ “(;CODE)‡€á2ôž®ˆ0
10+¦ §€¯5 n±½>PRT€ö2ôÆþ÷on±>VID€2ôon±2*€02ôhAiÄn±2/€A2ô¸gÄfAn±(REFIND)€S2ôÌ 4&®Ä'# 2®Bæ„Ä'˜@0†¦  €& Z&÷¦¤&5&6n±®ÔM+Æ Æ0…ça¯Ä®„&Ê ãMOVE€k2ô( –ìÁ'4`®ÄîB7¯¡ƒ&÷5`3Dn±CMOVE€¼2ô ^'<Ì£Á4"70' ¦ §€\&ùlä&õ5"n±U*€å2ôÈ%h2|¦AæC=íb¦ÄæB=íäìA=ãa$läía¦ÄæC=ãa$läía5íįBn±U/€ 2ô†4ìB£Ä$þ £ÄiEiDjä'YI$ç î2a3B®BíB¯Än±AND€G2ô!±7äA¤ÄíÄn±OR€2ô ê7êAªÄíÄn±XOR€—2ô7èA¨ÄíÄn±SP@€®2ôØ16n±SP!€Å2ôžî„oÄoAn±RP!€Ø2ôžîoäoan±;SB€ï2ô5 n±LEAVE…€2ô = Mìäíbn±>R‚€2ô®*–74n±R>‚€+2ôJ#ïR€=2ô2·ž~]=€J2ôl&¨7£Ä'& ;<€X2ô( )ìB£Á- '0=€l2ôÞìÄ&ÌÿÿíÄn±0<€2ố¦Ä+éÌíÄn±>€˜2ôìB£Á.Ð å+€®2ô3ƒ$®7ãÄíÄn±-€Â2ôìB£ÁíÄn±D+€Õ2ô1I!ÇìFãBíFìDéA©Ä3DíÄn±D-€é2ô!œ*VìF£BíFìDâA¢Ä3DíÄn±MINUS€2ô$ÅÌ£ÄíÄn±DMINUS€(2ôÌ£BíBÌâA¢ÄíÄn±OVER€A2ô— …ìB6n±DROP€a2ôov3Bn±SWAP€u2ô1i766n±DUP€‡2ôôìÄ6n±+!€œ2ô7ì„ãÁí„n±TOGGLE€®2ô¤"é7è„ç„n±C@€È2ô(éæÔOíÄn±C!€Ü2ôæCçÔ3Dn±ROT€ï2ô="T4 7666 5 n±BACK„€2ôi#lž7£ ƒ6~bNOT€2ô04ìÄSCíÄn±'A€92ô*
11+.R¦‹Ö&–.-->C€L2ô'v*ƒ
12+')Öf†Uk$Ï߸1ARRAY€k2ôŽ½
13+0ñ(3("߮Čÿ#Ì 6XìDíįDìB£Ä-ìÃíB6
14+{ &–5bbGK"^UTILITIESI€—2ô`DP@€ðü¸_6n±DCONSTANT €2ô
15+0ñ(3ubb"^SWAB€2ôOìÄçħAn±SWAN€92ô¦AæADVDVDVDVçA¦ÄæÄDVDVDVDVçÄn±1+€O2ô˜£ÌãÄíÄn±1-€y2ôÌÿÿãÄíÄn±2+€Ž2ôSÌãÄíÄn±2-€£2ôÌÿþãÄíÄn±0€¸2ô$/{Ì6n±1€Ì2ôìÌ6n±-1€Þ2ô.HÌÿÿ6n±2€ñ2ô—A3€2ôBL€2ô C/L€"2ôUFIRST€32ôULIMIT€E2ô$UB/BUF€W2ô2ÿ|B/SCR€i2ô+ORIGIN€|2ôÌü-TIB€‘2ôWARNING€¤2ôFENCE€¸2ô
16+DP€Ê2ô'é ROOT€Ù2ôBLK€ê2ô!/(ӝ.IN€ú2ô"@2E*OUT€ 2ô,SCR€2ô2OFFSET€)2ô6STATE€<2ô)k98BASE€N2ôDPL€_2ôÙ%˝:FLD€o2ô<CSP€2ôם R#€2ô&4HLD€ž2ô ¼!C"FOREWARD€®2ô@CURRENT€Ã2ôPREV€×2ô&USE€è2ô$DROOT€ø2ôHERE€
17+2ô.ÚSžì 6ž£ #n±Ì6~+ALLOT€2ô#‡žì +ããÁí Ô,€A2ô‘Õ74 ž®,큯,5 ¸C,€X2ôï374 ž®,ç€ áSPACE€u2ôÅNæýöà-DUP€‘2ôñ"§ìÄ'6n±?CST€¦2ô&ÿ&Œžæˆ9ÄÀO6n±IF€¼2ô$ -µ
18+'Fö%Öb{IFELSEĀÔ2ô+B
19+¦{IF&ë'Fß%Öb#Z‘ENDIFŀô2ôu. 
20+&²{IF&ë#ZLATEST€ 2ôULFA€ =2ôÆ CFA€ M2ôÆ
21+ãÄíÄn±GFA€ ^2ôÆ èPFA€ t2ô!cèÆ ×NFA€ …2ô.¯9Æô Æ!CSP€ –2ô)ßžïˆ n±HEX€ ¨2ôÆOžíˆn±DECIMAL€ ¼2ô3Ë3Æ
22+ ãOCTAL€ ×2ô<Æ ÐFILL€ ê2ôÊ#P4 76ç 0&ú5 n±ERASE€ ü2ôÆ6 ÝBLANKS€!2ô"Æ 6 ÇHOLD€!/2ô74 ž®¨"炯¨"5 n±PAD€!C2ôUS->D€!c2ôï)Â3^ìBø+-€!t2ô®%1ìÁ+ø›n±D+-€!t2ôìÁ+øŸn±ABS€!œ2ô30AìÄ+øqn±DABS€!±2ôyìÄ+øtn±MIN€!Ç2ô% ¼7£Ä,íÄn±MAX€!Ü2ô7£Ä/íÄn±[A€!ô2ô®Æ?žäˆ9çˆ9n±]€"
23+2ôÆÀžêˆ9çˆ9n±IMMEDIATE €"!2ôÆ@ SMUDGE€"@2ô!t‘Æ žè˜ç˜n±COMPILE-ONLY €"T2ôƀ ÜCOUNT€"v2ô®Ä怯ÄO6n±-TRAILING €"‰2ô.–ìÄ®B0‹† ¡‚&¬B$ø£BÃíÄn±(MACHINE)‰€"§2ô)(,!5 n„TYPE€"Õ2ôìÄ'ãBíÄ®B怯BO6
24+€"ß®B¬Ä%í3Dn±(.")„€"é2ô&öæ O!1«6 ÆID.€#2ô7æ„ÄP0…PO6 ªFILL-IN‡€#02ôžì £ÄƒíÑn±BEGINŀ#P2ô_
25+&²%{BEAGAINŀ#l2ô
26+{BE&ë'Fß(UNTILŀ#‡2ôG
27+{BE&ë'Fö(WHILEŀ#¦2ôÜ,ҝ
28+¦{BE&ë'Fö%Öb{WHREPEATƀ#Å2ô4.ê
29+{WH&ë5#‘G#ZDO€#Å2ôÜ 
30+'FL%{DOM*€$ 2ô$MìĨB4
31+!»‘!»"ßìá+ön±M/€$'2ô
32+k55!ÑT!»QGT¸!‘‘G!‘‘*€$M2ôº$ܝ
33+/MOD€$z2ôìÄ6ÌÿÿmD+ÃíBÿª/€$2ôky
34+$š‘MOD€$®2ô
35+$š*/MOD€$Å2ô$ô
36+5$1G$W*/€$Ü2ô
37+$æ‘M/MOD€$ô2ô$'*­
38+5ÖTQG‘5QG+BUF€% 2ôžüuÃãÄ£ˆ%ìˆíÄ£ˆ&'Ìÿÿ Ì6n±UPDATE€%12ô#¦1…žì˜&Š€í˜&n±EMPTY-BUFFERS €%h2ôžìˆƒ4&®ˆŽüu¬ä$¯0‹¬ä$¯ î5&n±DRIVE-OFFSET €%‹2ô%ë
39+(vv€€€DRIVE€%Ë2ôŽ%ÜÌã+jA*ø£žíˆ63Bn±R/W€%ë2ô4h¾ÀŽ%ÜìB£$ü(Ì6~+ãƒ46Ì6
40+$š"ß7ç"7\ç#5ƒ%ÜWç!ìDí$Æ®Ä&\ç¤O‹­ŸÀ5h3F¾Àæ'žÌíÌ6~+n±?ERROR€&2ô7ìÁ&n±6~+?COMP€&Œ2ô+&Şæˆ9ÄÀ&>Ì 4?EXEC€&¨2ô¼&ážæˆ9'#Ì ?PAIRS€&Å2ô'Ê7£Á'Ì6~+n±?CSP€&á2ôž0£ˆ 'çÌ Ý?LOADING€&ÿ2ôžìˆ.&ÉÌ ¿COMPILE€'2ô0"v
41+&²"ßì¡6~bLOOPĀ'<2ô”,l
42+{DO&ë'F(+LOOPŀ'W2ô!‡X
43+{DO&ë'F0(LOAD€'v2ô4 žì¨*®¨.4Ìí¨*
44+†$„f2O"ß5í¨*¯¨.5 n±<BUILDS‡€'”2ô
45+Ö1SDOES>…€'Ò2ôž®ˆì í
46+¯ 5 n±h;CODEŀ'é2ô1¹
47+' 'F"3 ²IP,ƒ€( 2ô~'L?STACK€()2ôž¬#Æ
48+ $ì˜&÷¬„"Æ ì”&£„#Æ £ #n±ÆO6~+BUFFER€(<2ôúu4 žì¨$46
49+%;öÿú"ß7í¨$®äì„*„06Ì6
50+&"ß75턯¨&065 n±BLOCK€(2ô-C4 žì¨6ãÄíÄ®¨&섄£Ä'"6
51+%;Ǧ(‹kk‘û&Â"ß7 Õ¯¨&0¯Ä5 n±(LINE)€(Ó2ô.ÿ
52+5=s$æG†$„Ì(ÝÌ=.LINE€)(2ô1Ó*l
53+)2"±"óSPACES€)Q2ôìÄ.3Bn±
54+ÖL›ÿú<#€)k2ô'Ҟìˆíˆ"n±#>€)2ô\Lžìˆ£ˆ"íÄìˆ"íBn±SIGN€)£2ô)
55+¢ö{-!M#€)Â2ô
56+iU%"ßæAÁ #Áñ#ËËË0çA
57+!M#S€)ß2ô
58+)é"ßìB&öìÄ&òn±D.R€*2ô
59+5‘k!Ñ)—*)Ì)­Gkß)u"óD.€*,2ô*,
60+Ö*6›.R€*V2ô
61+5!~G*6.€*l2ô¦)Q
62+!~*`?€*ƒ2ô0/ìÑ6 çMESSAGE€)Q2ô!ô
63+ÂUè‹ö°ö{FU†$¸ß)[ß #"MSG # *(ABORT)€*­2ô#B
64+3:ERROR€*ó2ô!ž
65+,Ü"“"ó#" ? *·ÂU¢ö*ýâUU2ÁEDITORF€+2ô`+oQSYNC€+B+Nžæˆ5†ýˆn±EBLK€+U+N+‚+¡0CURSOR€+U+N
66++yU(ݨUÌQDUMP€+‚+N+Ä/µ4 7 ŽOæ ç€J&ù5 n±QARROW€+¡+NæA†0/á€'J&ùÁ&"
67++Œ"ßÌ `§Ñ矈Æÿ æžëˆ5çˆ5ÌíÄn±^
68+ à ÿ(NUMBER)€+Ä2ôk4 7 žæ O6ìˆ6
69+ƒö%‘iUiUó"ߞìˆ:+ÑÃíˆ: É"ß1?6 5 n±NUMBER€,2ô!Üa70æ„À-&0O6_666Ìÿÿžíˆ:
70+,"ß®Äæ„'Á:'Á-% Á/" 0¯ÄÌ ÚÌ6~+3B
71+ÇKWORDPAD€,l2ôUWORD€,Ò2ô#Å24 žì¨.' 6
72+(Ý"ß7 ì$ã¨*760
73+ü"ß4 ìB£áãĞãˆ*íˆ*7ƒ#Ì®ˆç o¥6&5 
74+ïBS€,ã2ô՝U(EXPECT€-C2ô+ ü4 ìÄ®Bƒ->':0«¯Ä
75+ž"ßæAžáˆ)& 00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 01000 FCC 'CREATE' 01010 FCB 6 01020 FCB MFORE 01030 FDB VLIST-CFAOFF 01040 FDB BIF+2 01050 FDB CR-CFAOFF 01060 FDB CSP-CFAOFF 01070 CREATE DOCOL 01080 FDB DDFIND 01090 FDB OVER 01100 FDB ZBR 01110 FDB CREATN-*-2 01120 FDB SWAP nfa 01130 FDB IDDOT 01135 FDB SPACE 01140 FDB LIT 01150 FDB 4 01160 FDB MESS 01170 FDB SPACE 01190 FDB NFA vocab 01200 FDB IDDOT 01205 FDB CR 01210 FDB BRANCH 01220 FDB 4 01230 CREATN FDB DROP 01240 FDB DROP 01250 FDB NCOMMA 01260 FDB CCOMMA length 01270 FDB ZERO 01280 FDB CCOMMA mode 01290 FDB LATEST allocation link 01300 FDB COMMA 01310 FDB DUP nfa 01320 FDB CURR 01330 FDB STORE new LATEST 01340 FDB ZERO vocab 01350 FDB COMMA 01360 FDB ZERO 01370 FDB COMMA left 01380 FDB ZERO 01390 FDB COMMA right 01400 FDB SMUDGE hide 01410 FDB FOREMK 01420 FDB DROOT 01430 FDB FETCH 01440 FDB PINSTA in vocab 01450 FDB SEMIS 01490 * 01500 FCC 'CONSTANT' 01510 FCB 8 01520 FCB MFORE 01530 FDB CREATE-CFAOFF 01540 FDB BIF+2 01550 FDB CMOVE-CFAOFF 01560 FDB CREATE-CFAOFF 01570 CONST DOCOL 01580 FDB CREATE 01590 FDB IPCOM 01600 DOCON 01610 FDB COMMA 01620 FDB SMUDGE visible 01630 FDB SEMIS 01690 * 01700 FCC 'VARIABLE' 01710 FCB 8 01720 FCB MFORE 01730 FDB CONST-CFAOFF 01740 FDB BIF+2 01750 FDB USTAR-CFAOFF 01760 FDB WORD-CFAOFF 01770 VAR DOCOL 01780 FDB CREATE 01790 FDB IPCOM 01800 DOVAR 01810 FDB COMMA initial value 01820 FDB SMUDGE visible 01830 FDB SEMIS 01890 * 01900 FCC 'USER' 01910 FCB 4 01920 FCB MFORE 01930 FDB VAR-CFAOFF 01940 FDB BIF+2 01950 FDB USE-CFAOFF 01960 FDB UTIL-CFAOFF 01970 USER DOCOL 01980 FDB CREATE 01990 FDB IPCOM 02000 DOUSER 02010 FDB CCOMMA offset 02020 FDB SMUDGE visible 02030 FDB SEMIS 02080 * 02090 SCOMP EQU MCOMP.OR.MIMM 02100 FCC ':' 02110 FCB MIMM.OR.1 02120 FCB MFORE 02130 FDB USER-CFAOFF 02140 FDB BIF+2 02150 FDB ADD-CFAOFF 02160 FDB FETCH-CFAOFF 02170 COLON DOCOL 02180 FDB QEXEC 02190 FDB STOCSP 02200 FDB CREATE 02210 FDB IPCOM 02220 DOCOL 02230 FDB RBRAK 02240 FDB SEMIS 02290 * 02300 FCC ';' 02310 FCB MIMM.OR.1 02320 FCB MFORE 02330 FDB COLON-CFAOFF 02340 FDB BIF+2 02350 FDB 0 02360 FDB 0 02370 SEMI DOCOL see fig-FORTH model 02380 FDB QCSP 02390 FDB COMP 02400 FDB SEMIS 02410 FDB SMUDGE 02420 FDB LBRAK 02430 FDB SEMIS 02490 * 02500 FCC '."' 02510 FCB MIMM.OR.2 02520 FCB MFORE 02530 FDB SEMI-CFAOFF 02540 FDB BIF+2 02550 FDB 0 02560 FDB 0 02570 DOTQ DOCOL 02572 FDB ONE past delimiter 02574 FDB IN 02576 FDB ADDSTO 02580 FDB LIT 02590 FDB '" 02600 FDB WORD 02610 FDB WORDPD 02620 FDB QCST 02630 FDB ZBR 02640 FDB DOTQT-*-2 02650 FDB COMP 02660 FDB XDOTQ 02670 FDB HERE 02680 FDB OVER 02690 FDB CFEH count 02700 FDB ADD1 02710 FDB DUP 02720 FDB ALLOT 02730 FDB CMOVE 02732 FDB ONE past end quote 02734 FDB IN 02736 FDB ADDSTO 02740 FDB BRANCH 02750 FDB 4 02760 DOTQT FDB COUNT 02770 FDB TYPE 02780 FDB SEMIS 02790 * 02800 FCC '[COMPILE]' 02810 FCB MIMM.OR.9 02820 FCB MFORE 02830 FDB DOTQ-CFAOFF 02840 FDB BIF+2 02850 FDB LBRAK-CFAOFF 02860 FDB RBRAK-CFAOFF 02870 BCOMP DOCOL 02880 FDB DDFIND 02890 FDB DROP vocab 02900 FDB DUP 02910 FDB ZEQ 02920 FDB ZERO 02930 FDB QERR 02940 FDB CFA 02950 FDB COMMA 02960 FDB SEMIS 03180 * 03200 FCC 'INTERPRET' 03210 FCB 9 03220 FCB MFORE 03230 FDB BCOMP-CFAOFF 03240 FDB BIF+2 03250 FDB 0 * INDEX-CFAOFF 03260 FDB J-CFAOFF 03270 INTERP DOCOL 03280 FDB DIFIND 03290 FDB DROP 03300 FDB DDUP 03310 FDB ZBR 03320 FDB INTERN-*-2 03330 FDB DUP 03340 FDB CFA 03350 FDB SWAP 03360 FDB CFEH length 03370 FDB DUP 03380 FDB NOT 03390 FDB LIT 03400 FDB MIMM 03410 FDB AND 03420 FDB QCST 03430 FDB AND 03440 FDB ZBR 03450 FDB INTERX-*-2 03460 FDB DROP length 03470 FDB COMMA 03480 FDB BRANCH 03490 FDB INTERE-*-2 03500 INTERX FDB LIT 03510 FDB MCOMP 03520 FDB AND 03530 FDB QCST 03540 FDB NOT 03550 FDB AND 03560 FDB LIT 03570 FDB $11 03580 FDB QERR 03590 FDB EXEC 03600 FDB BRANCH 03610 FDB INTERE-*-2 03620 INTERN FDB WORDPD 03630 FDB NUMBER 03640 FDB DPL 03645 FDB FETCH 03650 FDB ZLESS 03660 FDB ZBR 03670 FDB INTERE-*-4 03680 FDB DROP 03690 FDB LITER 03700 FDB BRANCH 03710 FDB INTERE-*-2 03720 FDB DLITER 03730 INTERE FDB QSTACK 03740 FDB BRANCH 03750 FDB INTERP-* 03790 * 04200 FCC 'QUIT' 04210 FCB 4 04220 FCB MFORE 04230 FDB INTERP-CFAOFF 04240 FDB BIF+2 04250 FDB 0 04260 FDB 0 04270 QUIT DOCOL see fig-FORTH model 04280 FDB ZERO 04290 FDB BLK 04300 FDB STORE 04310 FDB LBRAK 04320 QUITL FDB TNULL 04325 FDB RPSTO 04330 FDB CR 04340 FDB QUERY 04350 FDB INTERP 04360 FDB QCST 04370 FDB TBR 04380 FDB QUITL-*-2 04390 FDB XDOTQ 04400 FCB 3 04410 FCC ' OK' 04420 FDB BRANCH 04430 FDB QUITL-*-2 04490 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00010 * Include file for BIF 00020 * BIF Copyright 1989 Joel Matthew Rees (see BIF/ASM) 00030 * 04500 FCC 'BIF' 04510 FCB MIMM.OR.3 04520 FCB MFORE 04530 FDB QUIT-CFAOFF 04540 FDB BIF+2 (PFA) 04550 FDB COLON-CFAOFF 04560 FDB IF-CFAOFF 04570 BIF DOVOC 04580 FDB BIF-CFAOFF (NFA) 04590 * 04600 FCC 'ASSEMBLER' 04610 FCB MIMM.OR.9 immediate? 04620 FCB MFORE 04630 FDB BIF-CFAOFF 04640 FDB BIF+2 parent voc 04650 FDB 0 04660 FDB 0 04670 ASMBLR DOVOC 04680 FDB 0 (NFA) 04690 * 04700 FCC 'DEFINITIONS' 04710 FCB 11 04720 FCB MFORE 04730 FDB ASMBLR-CFAOFF 04740 FDB BIF+2 04750 FDB 0 04760 FDB 0 04770 DEFS LDX <UP 04780 LDD UROOT,X 04790 STD UDROOT,X 04800 NEXT 04890 * 04900 FCC 'ABORT' 04910 FCB 5 04920 FCB MFORE 04930 FDB DEFS-CFAOFF 04940 FDB BIF+2 04950 FDB 0 04960 FDB 0 04970 ABORT DOCOL see fig-FORTH model 04975 FDB INULL 04980 FDB SPSTO 04990 FDB DEC 05000 FDB ZERO 05010 FDB DRIVE 05020 FDB CR 05030 FDB XDOTQ 05040 FCB 13 05050 FCC '6809 BIF V1.0' 05060 FDB BIF 05070 FDB DEFS 05080 FDB QUIT 05090 * 05100 FCC 'VOCABULARY' 05110 FCB 10 05120 FCB MFORE 05130 FDB ABORT-CFAOFF 05140 FDB BIF+2 05150 FDB 0 05160 FDB 0 05170 VOCAB DOCOL 05180 FDB CREATE 05190 FDB IPCOM 05200 DOVOC 05210 FDB ZERO 05220 FDB COMMA local 05255 FDB SMUDGE 05260 FDB SEMIS 05290 * 05300 FCC '(' 05301 FCB MIMM.OR.1 05302 FCB 0 05303 FDB VOCAB-CFAOFF 05304 FDB BIF+2 05305 FDB ENDHSH-CFAOFF 05306 FDB STAR-CFAOFF 05310 PAREN PSHS Y 05320 LDY <UP 05330 PARENL LDD #') 05340 PSHU D 05350 DOCOL 05360 FDB WORD 05370 FDB XMACH 05380 LDX UBLK,Y 05390 BNE *+6 05400 LDX UTIB,Y 05401 BRA *+12 05403 PSHU X 05405 DOCOL 05406 FDB BLOCK get adr 05408 FDB XMACH 05409 PULU X 05410 LDD UIN,Y 05420 LDA D,X 05425 BEQ PARENE NUL? 05430 CMPA #') 05440 BNE PARENL 05450 INCB bump 05453 BNE *+5 UIN>15 05456 INC UIN,Y carry 05460 STB UIN+1,Y 05470 PARENE PULS Y 05480 NEXT 05490 * 05500 FCC 'DAD' 05510 FCB 3 05520 FCB MFORE 05530 FDB PAREN-CFAOFF 05540 FDB BIF+2 05550 FDB 0 05560 FDB DCON-CFAOFF 05570 DAD PSHS Y 05580 PULU Y nfa 05590 LDB ,Y 05600 ANDB #NLMASK 05610 TFR B,A 05620 NEGA 05630 LEAX A,Y name 05640 DECA for NUL 05650 LEAS A,S allocate 05660 CLRA 05670 STA B,S NUL 05680 PSHU X 05690 PSHU D,S 05700 PSHS B,X mark 05710 DOCOL 05720 FDB CMOVE for (REFIND) 05730 FDB XMACH 05740 LEAX 3,S name 05750 PSHU X 05760 LDX GFAOFF,Y 05770 PSHU X 05780 DADL DOCOL 05790 FDB PREF 05800 FDB XMACH 05810 LDX [2,U] 05820 BNE DADC 05830 LDD #$19 not found 05840 PSHU D 05850 JMP ERROR 05860 DADC CMPY [2,U] this node? 05870 BEQ DADR 05880 LEAX RTOFF,X deeper 05890 LEAU 2,U 05900 STX ,U 05910 BRA DADL 05920 DADR PULS B,X 05930 STX 4,U 05950 INCB for NUL 05960 LEAS B,S drop name 05970 PULS Y 05980 NEXT 05990 * 20500 FCC 'REPEAL' 20510 FCB 6 20520 FCB MFORE 20530 FDB DAD-CFAOFF 20540 FDB BIF+2 20550 FDB 0 20560 FDB 0 20570 REPEAL PSHS Y 20580 LDX <UP 20590 LDY UCURR,X 20592 CMPY UFENCE,X 20594 BLS REPELX 20600 LDD LFAOFF,Y 20610 STD UCURR,X update 20620 LDD GFAOFF,Y stash 20625 PSHU Y 20630 LEAY PFAOFF,Y 20640 CMPY UROOT,X 20650 BNE REPELD 20660 STD UROOT,X 20670 REPELD CMPY UDROOT,X 20680 BNE REPELF 20690 STD UDROOT,X 20700 REPELF LDY ,U 20710 LDD #0 20720 CMPY UFORE,X end? 20730 BNE REPELA 20740 STD UFORE,X 20750 REPELA DOCOL 20760 FDB DAD 20760 FDB XMACH 20770 LEAU 2,U 20960 LDD #0 20970 STD [,U++] ground parent 20980 PULU D 20990 LDX <UP 21000 STD UDP,X 21010 REPELX PULS Y 21020 NEXT 21090 * 21100 FCC 'FORGET' 21110 FCB 6 21120 FCB MFORE 21130 FDB REPEAL-CFAOFF 21140 FDB BIF+2 21150 FDB FORE-CFAOFF 21160 FDB GFA-CFAOFF 21170 FORGET DOCOL 21180 FDB DDFIND 21190 FDB XMACH 21200 PSHS Y 21210 LEAU 2,U 21220 LDY ,U++ 21230 BNE FORGEF found? 21240 LDD #0 21250 PSHU D 21260 JMP ERROR 21270 FORGEF LDX <UP 21280 CMPY UFENCE,X 21290 BHI FORGER 21300 LDD #$15 21310 BRA FORGEF-5 21320 FORGER LDB MFAOFF,Y 21330 ANDB #MFORE 21370 BEQ FORGEL 21380 LDD #$1A 21390 BRA FORGEF-5 21400 FORGEL LDX <UP 21410 CMPY UCURR,X 21420 BHS FORGEO 21430 DOCOL 21440 FDB REPEAL 21450 FDB XMACH 21460 BRA FORGEL 21470 FORGEO BEQ FORGEN 21480 LDD #$1B 21490 BRA FORGEF-5 21500 FORGEN PULS Y 21510 JMP REPEAL 21520 FOLLOW EQU * 21530 * FORGET should be the last definition in the pre-assembled kernel 21540 * ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬D#1? oA Á &¯B Á %ï砝
76+€"߬Ä%Êo¤3D5 n±QUERY€-V2ô'W‡žÌíˆ*̀®6
77+-`@€-µ2ôžìˆ.'Ãíˆ.Ìíˆ*üˆZäˆ/&
78+&Ï"ß5 n±FIND€-Õ2ô-VìBÃíBìÄ®B6
79+Ä"ßìÄ&®Dì£D'3DíÄ ãìØ3DíBn±-DFIND€. 2ô
80+ô,,íU‘Ukkböß,Ü‘.kö,Ü‘.-IFIND€.H2ô
81+ôßÿ®NAME,€.–2ô
82+,Ü"“5%TKTï%GFORE-MARK €.¯2ôE4Œžìˆ@' ®ˆæʀçn±(INSTALL)‰€.–2ô®Ä&Ì6~+4 ®Bæ¤Ä˜@1¦J2æO§å6 6F4
83+ï"ß®Ä1a60
84+Ä"ßìÁ'®ÑŒ-Õ&Ì ¿æ„Ê ç„0 Þ5\2å®Ä&Ì §ìB®D¯„í$3F5 n±0!€.ÿ2ôÌýn±?0€/{2ôü&n±Ì6ž¦Š€§~+QUICK€/+N+U4 žì¨0®¨447í¨0Ìí¨4
85++Œ+«+_ž"ßæAÁ'8
86++Î+_+Œ"ßìB&æÑ Á\&
87+ž"ß7çÑl¨5¦¸&Š€§¸&Oíĝ
88+€+_ßÿ¾3B5í¨0¯¨45 n±NODE.€/µ2ô
89+¦#:›Ö*`ëÔ¦¢öžVISIT€042ô4 ž®¨>4ï¨>®Á7'8®„'4Ã
90+íä4¬¤"Æ ~(u®&ð¬¨>$®äì¸>6
91+¨(F"ßìÁ+5® ßî¨>5¯¨>5 n±VLIST€0a+N0a3h
92+{04ôU0kCREATE€0É2ôᏝ
93+.Rkö‘#:›{*·›  #:ëß.¹Ö Gb¦áfÖbÖbÖb"^.äU/ CONSTANT€0ç2ôå0ç
94+0ñ(3b"^VARIABLE€1I2ô ,ã
95+0ñ(3b"^USER€1i2ôøð
96+0ñ(3"^:A€1…2ôÂK
97+&Ï ²0ñ(3
98+"+;A€1ž2ô
99+' 'F"^"."B€1¹2ô
100+è¸{",í,ÜÆö'F#"%k惦Kïè¸ß"“"ó[COMPILE]I€1Ó2ô"
101+"!
102+.R¦‹Ö&– hbINTERPRET €22ôd
103+. °ö:¦ h‘æ¦C{@‹Æ‹öbß0{€‹ÆC‹{&–¨ß,Ü,vyU¢ö.ßg(FßÿžQUIT€2E2ô
104+Öf"/™ùë-¿2OÆÇÿð#" OKßÿæBIFC€2·2ô1žԝ`2èASSEMBLERI€2è2ô`DEFINITIONS €2ÿ2ôžìíˆn±ABORT€32ô
105+/…â áÖ%õë#" 6809 BIF V1.02ò3"2ÁVOCABULARY
106+€302ô
107+0ñ(3`Öb"^(A3h2ô)£$z4 žÌ)6
108+,í"ß®¨.&®$
109+6
110+(Ý"ß7ì¨*¦‹' )&×\&l¨*ç¨+5 n±DAD€3ƒ2ô4 7 æ¤Ä˜@0¦J2æO§å66F4
111+ï"ß0c6®$6
112+u"ß®Ø&Ì6~+¬Ø'03B¯Ä ß5¯D\2å5 n±REPEAL€3Ë2ô4 ž®ˆ¬
113+#=ì"íˆì$6 1,¬&í¬ˆ&툮Ä̬ˆ@&íˆ@
114+3Õ"ß3BÌíÑ7ží 5 n±FORGET€4.2ôà t
115+.R"ß4 3B®Á&Ì6~+ž¬
116+"Ì ïæ!Ā'Ì äž¬ˆ$
117+48"ß ð'Ì Í5 ~48ÿÄ+éÌíÄn±>€™2öìB£Á.Ð å+€¯2ö3…$¯7ãÄíÄn±-€Ã2öìB£ÁíÄn±D+€Ö2ö1K!ÈìFãBíFìDéA©Ä€3DíÄn±D-€ê2ö!*XìF£BíFìDâA¢Ä3DíÄn±MINUS€2ö$ÆÌ£ÄíÄn±DMINUS€)2öÌ£BíBÌâA¢ÄíÄn±OVER€B2ö˜ †ìB6n±DROP€b2öpw€€3Bn±SWAP€v2ö1k766n±DUP€ˆ2öõìÄ6n±+!€2ö7ì„ãÁí„n±TOGGLE€¯2ö¥"ê7è„ç„n±C@€É2ö(ƒêæÔOíÄn±C!€Ý2öæCçÔ3D€n±ROT€ð2ö>"U4 7666 5 n±BACK„€2öj#mž7£ ƒ6~cNOT€2ö06ìÄSCíÄn±'A€:2ö*
118+.T€§Œ×&—/-->C€M2ö'w*…
119+'*×g€€‡Vl$Ðà¹1ARRAY€l2ö¾
120+0ó(4("à®ÄŒÿ#Ì 6YìDíįDìB£Ä-ìÃíB6
121+| &—6cc€HL"_UTILITIESI€˜2ö`D€P@€ñý¸_6n±DCONSTANT €2ö
122+0ó(4ucc"_SWAB€2öPìÄçħAn±SWAN€:2ö¦AæADVDVDVDVçA¦ÄæÄDVDVDVDVçÄn±1+€P2ö€€™¤ÌãÄíÄn±1-€z2öÌÿÿãÄíÄn±2+€2öTÌãÄíÄn±2-€¤2öÌÿþãÄíÄn±0€¹2ö$‘/}Ì6n±1€Í2öíÌ6n±-1€ß2ö.JÌÿÿ6€n±2€ò2ö˜B3€2öBL€2ö C/L€#2öUFIRST€42ö€ULIMIT€F2ö%UB/BUF€X2ö3}B/SCR€€€j2ö+ORIGIN€}2öÌü-TIB€’2öWARNING€¥2öFENCE€¹2ö
123+DP€Ë2ö'ê ROOT€Ú2öBLK€ë2€ö!0(՝.IN€û2ö"A2G*OUT€
124+2ö,SCR€2ö2OFFSET€*2ö6STATE€=2ö)m:8BASE€O2öDPL€`2öÚ%̝:FLD€€€p2ö<CSP€€2ö؝ R#€2ö&4HLD€Ÿ2ö ½!D"FOREWARD€¯2ö@CURRENT€Ä2öPREV€Ø2ö&USE€é2ö€$DROOT€ù2öHERE€ 2ö.ÜTžì 6ž£ #n±Ì6~+ALLOT€2ö#ˆžì +ããÁí Ô,€B2ö’Ö74 ž®,큯,5 ¸C,€Y2öð4€€74 ž®,ç€ áSPACE€v2öÆOæýöà-DUP€’2öò"¨ìÄ'6n±?CST€§2ö'&žæˆ9ÄÀO6n±IF€½2ö$-·
125+'G÷&×c|IFELSEĀÕ2ö+D€
126+§|IF&ì'Gà&×c#[’ENDIFŀõ2öv. 
127+&³|IF&ì#[LATEST€ 2öULFA€ >2öÆ CFA€ N2öÆ
128+ãÄíÄn±GFA€ _2öƀ € èPFA€ u2ö!déÆ ×NFA€ †2ö.±:Æô Æ!CSP€ —2ö)ážïˆ n±HEX€ ©2öÆOžíˆn±DECIMAL€ ½2ö3Í3Æ
129+ ãOCTAL€ Ø2ö=Æ ÐFILL€ €!ë2öË#Q4 76ç 0&ú5 n±ERASE€ ý2öÆ6 ÝBLANKS€!2ö#Æ 6 ÇHOLD€!02ö74 ž®¨"炯¨"5 n±PAD€!D2öUS->D€!d2öð)Ä3€!€^ìBø+-€!u2ö¯%2ìÁ+ø›n±D+-€!u2öìÁ+øŸn±ABS€!2ö32BìÄ+øqn±DABS€!²2özìÄ+øtn±MIN€!È2ö%½7£Ä,íÄn±MAX€!Ý2ö7€"£Ä/íÄn±[A€!õ2ö¯Æ?žäˆ9çˆ9n±]€" 2öÆÀžêˆ9çˆ9n±IMMEDIATE €""2öÆ@ SMUDGE€"A2ö!u’Æ žè˜ç˜n±COMPILE-ONLY €"U2ö€"€Æ€ ÜCOUNT€"w2ö®Ä怯ÄO6n±-TRAILING €"Š2ö.˜ìÄ®B0‹† ¡‚&¬B$ø£BÃíÄn±(MACHINE)‰€"¨2ö)*,!5 n„TYPE€"Ö2öìÄ'ãBíÄ®B怀#¯BO6
130+"à®B¬Ä%í3Dn±(.")„€"ê2ö'÷æ O!1«6 ÆID.€#2ö7æ„ÄP0…PO6 ªFILL-IN‡€#12öžì £ÄƒíÑn±BEGINŀ#Q2ö`
131+&³&|B€#€EAGAINŀ#m2ö
132+|BE&ì'Gà)UNTILŀ#ˆ2öH
133+|BE&ì'G÷)WHILEŀ#§2öÜ,ԝ
134+§|BE&ì'G÷&×c|WHREPEATƀ#Æ2ö40ë
135+|WH€$&ì6#’H#[DO€#Æ2öÝ 
136+'GM&|DOM*€$2ö$NìĨB4
137+!¼’!¼"àìá+ön±M/€$(2ö
138+l66!ÒU!¼RHU¹!’’H!’’*€$N2€$€ö»$ݝ
139+€/MOD€${2öìÄ6ÌÿÿmD+ÃíBÿª/€$‘2ölz
140+$›’€MOD€$¯2ö
141+$›€*/MOD€$Æ2ö$õ
142+6$2H$X*/€$Ý2ö€%
143+$ç’€M/MOD€$õ2ö$(*¯
144+6×URH’6RH+BUF€%2öžüvÃãÄ£ˆ%ìˆíÄ£ˆ&'Ìÿÿ Ì6n±UPDATE€%22ö#§1‡žì˜&Š€í˜&n±E€%€MPTY-BUFFERS €%i2öžìˆƒ4&®ˆŽüv¬ä$¯0‹¬ä$¯ î5&n±DRIVE-OFFSET €%Œ2ö%ì (vv€€€DRIVE€%Ì2öŽ%ÝÌã+€&jA*ø£žíˆ63Bn±R/W€%ì2ö4h¾ÀŽ%ÝìB£$ü(Ì6~+ãƒ46Ì6
145+$›"à7ç"7\ç#5ƒ%ÝWç!ìDí$Æ®Ä&\ç¤O‹­ŸÀ5h3F¾Àæ'žÌíÌ€&€6~+n±?ERROR€&2ö7ìÁ&n±6~+?COMP€&2ö,&ƞæˆ9ÄÀ&>Ì 4?EXEC€&©2ö½&âžæˆ9'#Ì ?PAIRS€&Æ2ö' Ë7£Á'Ì6~+n±?CSP€'€&â2öž0£ˆ 'çÌ Ý?LOADING€'2öžìˆ.&ÉÌ ¿COMPILE€' 2ö0"w
146+&³"àì¡6~cLOOPĀ'=2ö•,n
147+|DO&ì'G)+LOOPŀ'X2ö!ˆ€'€Y
148+|DO&ì'G1)LOAD€'w2ö4 žì¨*®¨.4Ìí¨*
149+‡$…g2Q"à5í¨*¯¨.5 n±<BUILDS‡€'•2ö
150+×1UDOES>…€'Ó2öž®ˆì í
151+€(¯ 5 n±h;CODEŀ'ê2ö1»
152+'
153+'G"3 ³IP,ƒ€( 2ö~'M?STACK€(*2öž¬#Æ
154+ %ì˜&÷¬"Æ ì˜&£#Æ £ #n±ÆO6~+BUF€(€FER€(=2öûv4 žì¨$46
155+%<÷ÿú"à7í¨$®äì„*„06Ì6
156+&"à75턯¨&065 n±BLOCK€(ƒ2ö-E4 žì¨6ãÄíÄ®¨&섄£Ä'"6
157+%<Ȁ)€§(ll’ü&Ã"à7 Õ¯¨&0¯Ä5 n±(LINE)€(Õ2ö/
158+6>t$çH‡$…Í(ßÍ>.LINE€)*2ö1Õ*n
159+)4"²"ôSPACES€)S2öìÄ.3Bn±€)€
160+×Mœÿú<#€)m2ö'Ӟìˆíˆ"n±#>€)2ö]Mžìˆ£ˆ"íÄìˆ"íBn±SIGN€)¥2ö*
161+£÷|-!N#€)Ä2ö
162+jV%"àæAÁ #Áñ#€*ËËË0çA
163+!N#S€)á2ö
164+)ë"àìB&öìÄ&òn±D.R€*2ö
165+6’l!Ò)™*)Î)¯Hlà)w"ôD.€*.2ö*.
166+×*8œ.R€*X2ö
167+6!H€*€*8.€*n2ö§)S
168+!*b?€*…2ö1/‘ìÑ6 çMESSAGE€)S2ö!õ
169+ÃVéŒ÷±÷|GV‡$¹à)]à ##MSG # *(ABORT)€*¯2ö#C€+
170+3<ERROR€*õ2ö!Ÿ
171+,Þ"”"ô## ? *¹ÃV£÷*ÿãVV2ÃEDITORF€+
172+2ö`+qQSYNC€+D+Pžæˆ5†ýˆn±EBLK€+W+P+„+£0CU€+€RSOR€+W+P
173++{V(ß©VÍQDUMP€+„+P+Æ/·4 7 ŽOæ ç€J&ù5 n±QARROW€+£+PæA†0/á€'J&ùÁ&"
174++Ž"àÌ `§Ñ矈Æÿ æžëˆ5çˆ5€,ÌíÄn±^
175+ à ÿ(NUMBER)€+Æ2öl4 7 žæ O6ìˆ6
176+„÷%’jV€jVô"àžìˆ:+ÑÃíˆ: É"à1?6 5 n±NUMBER€,2ö!Ýb70æ„À-€,€&0O6_666Ìÿÿžíˆ:
177+,!"à®Äæ„'Á:'Á-% Á/" 0¯ÄÌ ÚÌ6~+3B
178+ÈLWORDPAD€,n2öUWORD€,Ô2ö#Æ2 4 žì¨.' 6
179+(ß"€-à7 ì$ã¨*760
180+ý"à4 ìB£áãĞãˆ*íˆ*7ƒ#Ì®ˆç o¥6&5 
181+ðBS€,å2ö֝U(EXPECT€-E2ö+
182+ ý4 ìÄ®Bƒ->':0«¯Ä
183+Ÿ"àæAžáˆ€-€)& ¬D#1? oA Á &¯B Á %ï砝
184+"à¬Ä%Êo¤3D5 n±QUERY€-X2ö'XˆžÌíˆ*̀®6
185+-b@€-·2öžìˆ.'Ãíˆ.Ìíˆ*ü‰Zäˆ/&
186+&€.Ð"à5 n±FIND€-×2ö-XìBÃíBìÄ®B6
187+Å"àìÄ&®Dì£D'3DíÄ ãìØ3DíBn±-DFIND€. 2ö
188+õ-,ïV’Vllc÷€à,Þ’.l÷€.€€€€,Þ’.-IFIND€.J2ö
189+õàÿ®NAME,€.˜2ö
190+,Þ"”6&ULUð&HFORE-MARK €.±2öF4Žžìˆ@' ®ˆæʀçn±(INSTALL€/)‰€.˜2ö®Ä&Ì6~+4 ®Bæ¤Ä˜@1¦J2æO§å6 6F4
191+ð"à®Ä1a60
192+Å"àìÁ'®ÑŒ-×&Ì ¿æ„Ê ç„0 Þ5\2å®Ä&Ì §ìB®D¯„í$3F5 n±0!€/€/€2öÌýn±?0€/}2öü&n±Ì6ž¦Š€§~+QUICK€/‘+P+W4 žì¨0®¨447í¨0Ìí¨4
193++Ž+­+aŸ"àæAÁ'8
194++Ð+a+Ž"àìB&æÑ Á\&€0
195+Ÿ"à7çÑl¨5¦¸&Š€§¸&Oíĝ
196++aàÿ¾3B5í¨0¯¨45 n±NODE.€/·2ö
197+§#;œ×*bìÕ§£÷€ŸVISIT€062ö4 ž®¨>4ï¨>®Á7'€0€8®„'4Ã
198+íä4¬ "Æ ~(w®&ð¬¨>$®äì¸>6
199+©(G"àìÁ+5® ßî¨>5¯¨>5 n±VLIST€0c+P0c3j
200+|06õV0mCREATE€0Ë2ö␝
201+.Tl÷’#€1;œ|*¹œ ¡#;ìà€€.»€×€ Hc§âg×c×c×c"_.æV/ CONSTANT€0é2öæ0é
202+0ó(4c"_VARIABLE€1K2ö ,å
203+0ó(4c"€1€_USER€1k2öùñ
204+0ó(4€"_:A€1‡2öÃL
205+&Ð ³0ó(4
206+",;A€1 2ö
207+'
208+'G"_"."B€1»2ö
209+é¹|",ï,ÞÇ÷'G##&lç€2„§Lðé¹à"”"ô[COMPILE]I€1Õ2ö" ""
210+.T€§Œ×&— icINTERPRET €2 2öe
211+.¢€±÷:§ i’ç§D|@ŒÇŒ÷€cà0€2€|€ŒÇDŒ|&—©à,Þ,xzV£÷€/àh(GàÿžQUIT€2G2ö
212+×g"/›úì-Á2QÇÈÿð## OKàÿæBIFC€2¹2ö1 ՝`2êASSEMBLE€3RI€2ê2ö`DEFINITIONS €32öžìíˆn±ABORT€32ö
213+/‡ã â×%öì## 6809 BIF V1.02ô3$2ÃVOCABULARY
214+€322ö
215+0ó(4`×c€3€"_(A3j2ö)¥${4 žÌ)6
216+,ï"ந.&®$
217+6
218+(ß"à7ì¨*¦‹' )&×\&l¨*ç¨+5 n±DAD€3…2ö4 7 æ¤Ä˜@0¦J2æO§å66F4
219+ð"à0c6®$6
220+€4v"à®Ø&Ì6~+¬Ø'03B¯Ä ß5¯D\2å5 n±REPEAL€3Í2ö4 ž®ˆ¬
221+#=ì"íˆì$6 1,¬&í¬ˆ&툮Ä̬ˆ@&íˆ@
222+3×"à3BÌíÑ7b4€ží 5 n±FORGET€402öÄ u
223+.T"à4 3B®Á&Ì6~+ž¬
224+"Ì ïæ!Ā'Ì äž¬ˆ$
225+4:"à ð'Ì Í5 ~4:ÿ&O!'®ÄŒÿ#Ì 6åìDíįDìB£€ŠÄ-ìÃíB6 ¬ $¸-ÉÉê<® «UTIL0O6_666Ìÿÿžíˆ:
226+,!"à®Äæ„'Á:'Á-% Á/" 0¯ÄÌ ÚÌ6~+3B
227+ÈLWORDPAD€,n2õUWORD€,Ô2õ#Æ24 žì¨.' 6
228+(ß"€-à7 ì$ã¨*760
229+ý"à4 ìB£áãĞãˆ*íˆ*7ƒ#Ì®ˆç o¥6&5 
230+ðBS€,å2õ֝U(EXPECT€-E2õ+
231+ ý4 ìÄ®Bƒ->':0«¯Ä
232+Ÿ"àæAžáˆ€-€)& ¬D#1? oA Á &¯B Á %ï砝
233+"à¬Ä%Êo¤3D5 n±QUERY€-X2õ'XˆžÌíˆ*̀®6
234+-b@€-·2õžìˆ.'Ãíˆ.Ìíˆ*ü‰Zäˆ/&
235+&Ѐ."à5 n±FIND€-Ö2õ-XìBÃíBìÄ®B6
236+Å"àìÄ&®Dì£D'3DíÄ ãìØ3DíBn±-DFIND€.
237+2õ
238+õ-,ïV’Vllc÷€à,Þ’.l÷€.€€€€,Þ’.-IFIND€.I2õ
239+õàÿ®NAME,€.—2õ
240+,Þ"”6&ULUð&HFORE-MARK €.°2õF4žìˆ@' ®ˆæʀçn±(INSTALL)€/‰€.—2õ®Ä&Ì6~+4 ®Bæ¤Ä˜@1¦J2æO§å6 6F4
241+ð"à®Ä1a60
242+Å"àìÁ'®ÑŒ-Ö&Ì ¿æ„Ê ç„0 Þ5\2å®Ä&Ì §ìB®D¯„í$3F5 n±0!€/€/€2õÌýn±?0€/|2õü&n±Ì6ž¦Š€§~+QUICK€/+P+W4 žì¨0®¨447í¨0Ìí¨4
243++Ž+­+aŸ"àæAÁ'8
244++Ð+a+Ž"àìB&æÑ Á\&€0
245+Ÿ"à7çÑl¨5¦¸&Š€§¸&Oíĝ
246++aàÿ¾3B5í¨0¯¨45 n±NODE.€/¶2õ
247+§#;œ×*bìÕ§£÷€ŸVISIT€052õ4 ž®¨>4ï¨>®Á7'8€0€®„'4Ã
248+íä4¬ "Æ ~(w®&ð¬¨>$®äì¸>6
249+©(G"àìÁ+5® ßî¨>5¯¨>5 n±VLIST€0b+P0b3i
250+|05õV0lCREATE€0Ê2õ␝
251+.Sl÷’#;€1œ|*¹œ ¡#;ìà€€.º€×€ Hc§âg×c×c×c"_.åV/
252+CONSTANT€0è2õæ0è
253+0ò(4c"_VARIABLE€1J2õ ,å
254+0ò(4c"_€1€USER€1j2õùñ
255+0ò(4€"_:A€1†2õÃL
256+&Ð ³0ò(4
257+",;A€1Ÿ2õ
258+'
259+'G"_"."B€1º2õ
260+é¹|",ï,ÞÇ÷'G##&lç„€2§Lðé¹à"”"ô[COMPILE]I€1Ô2õ" ""
261+.S€§Œ×&— icINTERPRET €22õe
262+.¡€±÷:§ i’ç§D|@ŒÇŒ÷€cà0|€2€€ŒÇDŒ|&—©à,Þ,xzV£÷€/àh(GàÿžQUIT€2F2õ
263+×g"/šúì-Á2PÇÈÿð## OKàÿæBIFC€2¸2õ1Ÿ՝`2éASSEMBLER€3I€2é2õ`DEFINITIONS €32õžìíˆn±ABORT€32õ
264+/†ã â×%öì## 6809 BIF V1.02ó3#2ÂVOCABULARY
265+€312õ
266+0ò(4`×c"€3€_(A3i2õ)¥${4 žÌ)6
267+,ï"ந.&®$
268+6
269+(ß"à7ì¨*¦‹' )&×\&l¨*ç¨+5 n±DAD€3„2õ4 7 æ¤Ä˜@0¦J2æO§å66F4
270+ð"à0c6®$6
271+€4v"à®Ø&Ì6~+¬Ø'03B¯Ä ß5¯D\2å5 n±REPEAL€3Ì2õ4 ž®ˆ¬
272+#=ì"íˆì$6 1,¬&í¬ˆ&툮Ä̬ˆ@&íˆ@
273+3Ö"à3BÌíÑ7ža4€í 5 n±FORGET€4/2õÄ u
274+.S"à4 3B®Á&Ì6~+ž¬
275+"Ì ïæ!Ā'Ì äž¬ˆ$
276+49"à ð'Ì Í5 ~49ÿ20 FDB BLOCK 02130 FDB XMACH 02140 PULU D 02150 BRA *+4 UTIB < 16! 02160u
277+®ä¯än±ìñ6n±56n±æñOÓ6n±5ìÄ£„£%Ì 6~+4¦=íÄ5æ=˜«ÄæA00‹¯Än±žæñOì‹6n±ž5ín±®äì6¯än±5쁮6n±€~:~æh 4ŽzYyUzWz­4á4â2ö{p{- {ð€COLD€2ö1yRqì<íˆì,í
278+ì.í ì¨ííˆ6Ì+P6
279+Ì3 6~ë46ž®Á'?ì„';£*#̀€í„ /Ì4ì'£*#Ìí 4ì'£*" áÌí®á&Ø5¶ÎzW4P4 Ì‹Ž®¤ŸÎyUÌý9WARM€02ö0˹1ŒÎRì"ííˆ ì$íì>íˆ(ì&íì€*í1¨ì"íˆíˆ"ì$íˆì&íˆì(íˆíˆ$íˆ&ì*íˆÌíˆÌí˜혆*1ˆ*ç J&û5ï
280+%–3<@€Ü2öY‚ìÔíÄn±!€L2ö-× ©ìBíÔ3Dn±LITƒ€]2öì¡6€€n±DLIT„€r2öì¡®¡6n±EXECUTE‡€†2ö®Á'n„Ì 6~+1BRANCH‡€Ÿ2öìÁ&1"n±BRANCH†€¾2öì¡1«n±0BRANCH‡€Ö2öìÁ'å1"n±(€LOOP)†€í2öÌãäíä£b-Æ1"2dn±(+LOOP)‡€2öìÁ*Ýãäíä£b.£ Û(DO)€'2ö74n±I€C2ö¯#1ìä6n±J€T2ö(*ìd6n±DIGIT€e2ö€€ Ø^æCÁ9#ÁA% ÁZ#
281+Áa%Áz"ÀÀÀ0áA$
282+OíBÌÿÿíÄn±3BÌ õ(FIND)€z2ö*õ"ÖìÄ'
283+v"à3B®Ô'æ„Ä '0¯Ä èŽÿÿìįÄíBn±ENCLOSE€»2ö%Œ®B怀'áA'ø0¯Bæ€'áA&øƒ£BíÄn±LITERALG€ó2ör'•Ì|í¡7í¡¯ 5 ~,žæˆ9ÄÀ5&n±4 ® DLITERALH€%2ö†BØ̐í¡7 ÁEMIT€^2ö€€ó7˜_4h›­Ÿ 5hn±KEY€w2ö
284+X4h_†Ï›žˆæ„§„­Ÿ 'úç„_&S‰5h6n±?TERMINAL €•2ö(=4h_›­Ÿ  ÔCR€Ë2ö"ŠÆ “(;CODE)‡€â2ö€ž®ˆ0
285+¦ §€¯5 n±½>PRT€÷2öÆþ÷on±>VID€2öon±2*€12öhAiÄn±2/€B2ö¹gÄfAn±(REFIND)€T2öÌ 4&®Ä'# €€2®Bæ„Ä'˜@0†¦  €& Z&÷¦¤&5&6n±®ÔM+Æ Æ0…ça¯Ä®„&Ê ãMOVE€l2ö) —ìÁ'4`®ÄîB7¯¡ƒ&÷5`3Dn±CMOVE€½2ö _'=Ì£Á4"70' ¦ §€\€&ùlä&õ5"n±U*€æ2öÉ%i2|¦AæC=íb¦ÄæB=íäìA=ãa$läía¦ÄæC=ãa$läía5íįBn±U/€ 2ö†4ìB£Ä$þ £ÄiEiDjä'YI$ç î2a3B®BíB¯Än±A€€ND€H2ö!²7äA¤ÄíÄn±OR€‚2ö ë7êAªÄíÄn±XOR€˜2ö7èA¨ÄíÄn±SP@€¯2öÙ16n±SP!€Æ2öžîoÄoAn±RP!€Ù2öžîo€äoan±;SB€ð2ö5 n±LEAVE…€2ö > Nìäíbn±>R‚€2ö¯*˜74n±R>‚€,2öK#ðR€>2ö2¹Ÿ~^=€K2öm&©7£Ä'& ;<€Y2ö( )ìB£Á- '€€0=€m2ößìÄ&ÌÿÿíÄn±0<€‚2öÍ‚¦Ä+éÌíÄn±>€™2öìB£Á.Ð å+€¯2ö3…$¯7ãÄíÄn±-€Ã2öìB£ÁíÄn±D+€Ö2ö1K!ÈìFãBíFìDéA©Ä€3DíÄn±D-€ê2ö!*XìF£BíFìDâA¢Ä3DíÄn±MINUS€2ö$ÆÌ£ÄíÄn±DMINUS€)2öÌ£BíBÌâA¢ÄíÄn±OVER€B2ö˜ †ìB6n±DROP€b2öpw€€3Bn±SWAP€v2ö1k766n±DUP€ˆ2öõìÄ6n±+!€2ö7ì„ãÁí„n±TOGGLE€¯2ö¥"ê7è„ç„n±C@€É2ö(ƒêæÔOíÄn±C!€Ý2öæCçÔ3D€n±ROT€ð2ö>"U4 7666 5 n±BACK„€2öj#mž7£ ƒ6~cNOT€2ö06ìÄSCíÄn±'A€:2ö*
286+.T€§Œ×&—/-->C€M2ö'w*…
287+'*×g€€‡Vl$Ðà¹1ARRAY€l2ö¾
288+0ó(4("à®ÄŒÿ#Ì 6YìDíįDìB£Ä-ìÃíB6
289+| &—6cc€HL"_UTILITIESI€˜2ö`D€P@€ñý¸_6n±DCONSTANT €2ö
290+0ó(4ucc"_SWAB€2öPìÄçħAn±SWAN€:2ö¦AæADVDVDVDVçA¦ÄæÄDVDVDVDVçÄn±1+€P2ö€€™¤ÌãÄíÄn±1-€z2öÌÿÿãÄíÄn±2+€2öTÌãÄíÄn±2-€¤2öÌÿþãÄíÄn±0€¹2ö$‘/}Ì6n±1€Í2öíÌ6n±-1€ß2ö.JÌÿÿ6€n±2€ò2ö˜B3€2öBL€2ö C/L€#2öUFIRST€42ö€ULIMIT€F2ö%UB/BUF€X2ö3}B/SCR€€€j2ö+ORIGIN€}2öÌü-TIB€’2öWARNING€¥2öFENCE€¹2ö
291+DP€Ë2ö'ê ROOT€Ú2öBLK€ë2€ö!0(՝.IN€û2ö"A2G*OUT€
292+2ö,SCR€2ö2OFFSET€*2ö6STATE€=2ö)m:8BASE€O2öDPL€`2öÚ%̝:FLD€€€p2ö<CSP€€2ö؝ R#€2ö&4HLD€Ÿ2ö ½!D"FOREWARD€¯2ö@CURRENT€Ä2öPREV€Ø2ö&USE€é2ö€$DROOT€ù2öHERE€ 2ö.ÜTžì 6ž£ #n±Ì6~+ALLOT€2ö#ˆžì +ããÁí Ô,€B2ö’Ö74 ž®,큯,5 ¸C,€Y2öð4€€74 ž®,ç€ áSPACE€v2öÆOæýöà-DUP€’2öò"¨ìÄ'6n±?CST€§2ö'&žæˆ9ÄÀO6n±IF€½2ö$-·
293+'G÷&×c|IFELSEĀÕ2ö+D€
294+§|IF&ì'Gà&×c#[’ENDIFŀõ2öv. 
295+&³|IF&ì#[LATEST€ 2öULFA€ >2öÆ CFA€ N2öÆ
296+ãÄíÄn±GFA€ _2öƀ € èPFA€ u2ö!déÆ ×NFA€ †2ö.±:Æô Æ!CSP€ —2ö)ážïˆ n±HEX€ ©2öÆOžíˆn±DECIMAL€ ½2ö3Í3Æ
297+ ãOCTAL€ Ø2ö=Æ ÐFILL€ €!ë2öË#Q4 76ç 0&ú5 n±ERASE€ ý2öÆ6 ÝBLANKS€!2ö#Æ 6 ÇHOLD€!02ö74 ž®¨"炯¨"5 n±PAD€!D2öUS->D€!d2öð)Ä3€!€^ìBø+-€!u2ö¯%2ìÁ+ø›n±D+-€!u2öìÁ+øŸn±ABS€!2ö32BìÄ+øqn±DABS€!²2özìÄ+øtn±MIN€!È2ö%½7£Ä,íÄn±MAX€!Ý2ö7€"£Ä/íÄn±[A€!õ2ö¯Æ?žäˆ9çˆ9n±]€" 2öÆÀžêˆ9çˆ9n±IMMEDIATE €""2öÆ@ SMUDGE€"A2ö!u’Æ žè˜ç˜n±COMPILE-ONLY €"U2ö€"€Æ€ ÜCOUNT€"w2ö®Ä怯ÄO6n±-TRAILING €"Š2ö.˜ìÄ®B0‹† ¡‚&¬B$ø£BÃíÄn±(MACHINE)‰€"¨2ö)*,!5 n„TYPE€"Ö2öìÄ'ãBíÄ®B怀#¯BO6
298+"à®B¬Ä%í3Dn±(.")„€"ê2ö'÷æ O!1«6 ÆID.€#2ö7æ„ÄP0…PO6 ªFILL-IN‡€#12öžì £ÄƒíÑn±BEGINŀ#Q2ö`
299+&³&|B€#€EAGAINŀ#m2ö
300+|BE&ì'Gà)UNTILŀ#ˆ2öH
301+|BE&ì'G÷)WHILEŀ#§2öÜ,ԝ
302+§|BE&ì'G÷&×c|WHREPEATƀ#Æ2ö40ë
303+|WH€$&ì6#’H#[DO€#Æ2öÝ 
304+'GM&|DOM*€$2ö$NìĨB4
305+!¼’!¼"àìá+ön±M/€$(2ö
306+l66!ÒU!¼RHU¹!’’H!’’*€$N2€$€ö»$ݝ
307+€/MOD€${2öìÄ6ÌÿÿmD+ÃíBÿª/€$‘2ölz
308+$›’€MOD€$¯2ö
309+$›€*/MOD€$Æ2ö$õ
310+6$2H$X*/€$Ý2ö€%
311+$ç’€M/MOD€$õ2ö$(*¯
312+6×URH’6RH+BUF€%2öžüvÃãÄ£ˆ%ìˆíÄ£ˆ&'Ìÿÿ Ì6n±UPDATE€%22ö#§1‡žì˜&Š€í˜&n±E€%€MPTY-BUFFERS €%i2öžìˆƒ4&®ˆŽüv¬ä$¯0‹¬ä$¯ î5&n±DRIVE-OFFSET €%Œ2ö%ì (vv€€€DRIVE€%Ì2öŽ%ÝÌã+€&jA*ø£žíˆ63Bn±R/W€%ì2ö4h¾ÀŽ%ÝìB£$ü(Ì6~+ãƒ46Ì6
313+$›"à7ç"7\ç#5ƒ%ÝWç!ìDí$Æ®Ä&\ç¤O‹­ŸÀ5h3F¾Àæ'žÌíÌ€&€6~+n±?ERROR€&2ö7ìÁ&n±6~+?COMP€&2ö,&ƞæˆ9ÄÀ&>Ì 4?EXEC€&©2ö½&âžæˆ9'#Ì ?PAIRS€&Æ2ö' Ë7£Á'Ì6~+n±?CSP€'€&â2öž0£ˆ 'çÌ Ý?LOADING€'2öžìˆ.&ÉÌ ¿COMPILE€' 2ö0"w
314+&³"àì¡6~cLOOPĀ'=2ö•,n
315+|DO&ì'G)+LOOPŀ'X2ö!ˆ€'€Y
316+|DO&ì'G1)LOAD€'w2ö4 žì¨*®¨.4Ìí¨*
317+‡$…g2Q"à5í¨*¯¨.5 n±<BUILDS‡€'•2ö
318+×1UDOES>…€'Ó2öž®ˆì í
319+€(¯ 5 n±h;CODEŀ'ê2ö1»
320+'
321+'G"3 ³IP,ƒ€( 2ö~'M?STACK€(*2öž¬#Æ
322+ %ì˜&÷¬"Æ ì˜&£#Æ £ #n±ÆO6~+BUF€(€FER€(=2öûv4 žì¨$46
323+%<÷ÿú"à7í¨$®äì„*„06Ì6
324+&"à75턯¨&065 n±BLOCK€(ƒ2ö-E4 žì¨6ãÄíÄ®¨&섄£Ä'"6
325+%<Ȁ)€§(ll’ü&Ã"à7 Õ¯¨&0¯Ä5 n±(LINE)€(Õ2ö/
326+6>t$çH‡$…Í(ßÍ>.LINE€)*2ö1Õ*n
327+)4"²"ôSPACES€)S2öìÄ.3Bn±€)€
328+×Mœÿú<#€)m2ö'Ӟìˆíˆ"n±#>€)2ö]Mžìˆ£ˆ"íÄìˆ"íBn±SIGN€)¥2ö*
329+£÷|-!N#€)Ä2ö
330+jV%"àæAÁ #Áñ#€*ËËË0çA
331+!N#S€)á2ö
332+)ë"àìB&öìÄ&òn±D.R€*2ö
333+6’l!Ò)™*)Î)¯Hlà)w"ôD.€*.2ö*.
334+×*8œ.R€*X2ö
335+6!H€*€*8.€*n2ö§)S
336+!*b?€*…2ö1/‘ìÑ6 çMESSAGE€)S2ö!õ
337+ÃVéŒ÷±÷|GV‡$¹à)]à ##MSG # *(ABORT)€*¯2ö#C€+
338+3<ERROR€*õ2ö!Ÿ
339+,Þ"”"ô## ? *¹ÃV£÷*ÿãVV2ÃEDITORF€+
340+2ö`+qQSYNC€+D+Pžæˆ5†ýˆn±EBLK€+W+P+„+£0CU€+€RSOR€+W+P
341++{V(ß©VÍQDUMP€+„+P+Æ/·4 7 ŽOæ ç€J&ù5 n±QARROW€+£+PæA†0/á€'J&ùÁ&"
342++Ž"àÌ `§Ñ矈Æÿ æžëˆ5çˆ5€,ÌíÄn±^
343+ à ÿ(NUMBER)€+Æ2öl4 7 žæ O6ìˆ6
344+„÷%’jV€jVô"àžìˆ:+ÑÃíˆ: É"à1?6 5 n±NUMBER€,2ö!Ýb70æ„À-€,€&0O6_666Ìÿÿžíˆ:
345+,!"à®Äæ„'Á:'Á-% Á/" 0¯ÄÌ ÚÌ6~+3B
346+ÈLWORDPAD€,n2öUWORD€,Ô2ö#Æ2 4 žì¨.' 6
347+(ß"€-à7 ì$ã¨*760
348+ý"à4 ìB£áãĞãˆ*íˆ*7ƒ#Ì®ˆç o¥6&5 
349+ðBS€,å2ö֝U(EXPECT€-E2ö+
350+ ý4 ìÄ®Bƒ->':0«¯Ä
351+Ÿ"àæAžáˆ€-€)& ¬D#1? oA Á &¯B Á %ï砝
352+"à¬Ä%Êo¤3D5 n±QUERY€-X2ö'XˆžÌíˆ*̀®6
353+-b@€-·2öžìˆ.'Ãíˆ.Ìíˆ*ü‰Zäˆ/&
354+&€.Ð"à5 n±FIND€-×2ö-XìBÃíBìÄ®B6
355+Å"àìÄ&®Dì£D'3DíÄ ãìØ3DíBn±-DFIND€. 2ö
356+õ-,ïV’Vllc÷€à,Þ’.l÷€.€€€€,Þ’.-IFIND€.J2ö
357+õàÿ®NAME,€.˜2ö
358+,Þ"”6&ULUð&HFORE-MARK €.±2öF4Žžìˆ@' ®ˆæʀçn±(INSTALL€/)‰€.˜2ö®Ä&Ì6~+4 ®Bæ¤Ä˜@1¦J2æO§å6 6F4
359+ð"à®Ä1a60
360+Å"àìÁ'®ÑŒ-×&Ì ¿æ„Ê ç„0 Þ5\2å®Ä&Ì §ìB®D¯„í$3F5 n±0!€/€/€2öÌýn±?0€/}2öü&n±Ì6ž¦Š€§~+QUICK€/‘+P+W4 žì¨0®¨447í¨0Ìí¨4
361++Ž+­+aŸ"àæAÁ'8
362++Ð+a+Ž"àìB&æÑ Á\&€0
363+Ÿ"à7çÑl¨5¦¸&Š€§¸&Oíĝ
364++aàÿ¾3B5í¨0¯¨45 n±NODE.€/·2ö
365+§#;œ×*bìÕ§£÷€ŸVISIT€062ö4 ž®¨>4ï¨>®Á7'€0€8®„'4Ã
366+íä4¬ "Æ ~(w®&ð¬¨>$®äì¸>6
367+©(G"àìÁ+5® ßî¨>5¯¨>5 n±VLIST€0c+P0c3j
368+|06õV0mCREATE€0Ë2ö␝
369+.Tl÷’#€1;œ|*¹œ ¡#;ìà€€.»€×€ Hc§âg×c×c×c"_.æV/ CONSTANT€0é2öæ0é
370+0ó(4c"_VARIABLE€1K2ö ,å
371+0ó(4c"€1€_USER€1k2öùñ
372+0ó(4€"_:A€1‡2öÃL
373+&Ð ³0ó(4
374+",;A€1 2ö
375+'
376+'G"_"."B€1»2ö
377+é¹|",ï,ÞÇ÷'G##&lç€2„§Lðé¹à"”"ô[COMPILE]I€1Õ2ö" ""
378+.T€§Œ×&— icINTERPRET €2 2öe
379+.¢€±÷:§ i’ç§D|@ŒÇŒ÷€cà0€2€|€ŒÇDŒ|&—©à,Þ,xzV£÷€/àh(GàÿžQUIT€2G2ö
380+×g"/›úì-Á2QÇÈÿð## OKàÿæBIFC€2¹2ö1 ՝`2êASSEMBLE€3RI€2ê2ö`DEFINITIONS €32öžìíˆn±ABORT€32ö
381+/‡ã â×%öì## 6809 BIF V1.02ô3$2ÃVOCABULARY
382+€322ö
383+0ó(4`×c€3€"_(A3j2ö)¥${4 žÌ)6
384+,ï"ந.&®$
385+6
386+(ß"à7ì¨*¦‹' )&×\&l¨*ç¨+5 n±DAD€3…2ö4 7 æ¤Ä˜@0¦J2æO§å66F4
387+ð"à0c6®$6
388+€4v"à®Ø&Ì6~+¬Ø'03B¯Ä ß5¯D\2å5 n±REPEAL€3Í2ö4 ž®ˆ¬
389+#=ì"íˆì$6 1,¬&í¬ˆ&툮Ä̬ˆ@&íˆ@
390+3×"à3BÌíÑ7b4€ží 5 n±FORGET€402öÄ u
391+.T"à4 3B®Á&Ì6~+ž¬
392+"Ì ïæ!Ā'Ì äž¬ˆ$
393+4:"à ð'Ì Í5 ~4:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
Binary files /dev/null and b/testsource/blank.dsk differ
--- /dev/null
+++ b/testsource/cs431.dsk
@@ -0,0 +1 @@
1+0) Index to BIF HI-LEVEL disk 2) Title page, Copr. notice 3) MONITOR CALL TO DEBUG 4) ERROR MESSAGES 6) HIGH LEVEL TOOLS & UTILITIES 7) LIST, INDEX, TRIAD 8) HIGH LEVEL DISK & SCREEN 11) FORWARD REFERENCING 12) PERIPHERAL UTILITIES 13) SLIST 15) DUMP DEFINITION BY NAME 16) ASSEMBLER 32) DOUBLES IN ASSEMBLER 40) HLL COMPILER 64) PAIR ASSOCIATION EXAMPLE 66) A TRY AT DIVIDE BY CONSTANT 100) SARDIS DMC STUFF 144) HOOCH COMPILER REMAINS BIF EDITOR, UTILITIES, ASSEMBLER, AND EXAMPLES VERSION 1.0 COPYRIGHT 1989 JOEL MATTHEW REES THESE ALGORITHMS ARE EXPRESSED IN THREE LANGUAGES: BIF, BIF ASSEMBLER FOR THE MOTOROLA M6809 MICROPROCESSOR, AND HEXADECIMAL MACHINE CODE FORTHE M6809. THE TEXT IS ORGANIZED FOR EDITING ON A 32-COLUMN TERMINAL,SUCH AS IS FOUND ON A RADIO SHACK COLOR COMPUTER 2. THESE ALGORITHMS AND THEIR TEXT ARE INTENDED FOR NO PURPOSEOTHER THAN EXPERIMENTATION, AND NO CLAIMS OR WARRANTIES ARE MADECONCERNING THEIR USEFULNESS IN ANY PARTICULAR APPLICATION. PUBLISHED 1989 JOEL MATTHEW REES SOUTH SALT LAKE CITY, UTAH ( CALL TO MONITOR, IF SWI IS BREAKPOINT JMR-88OCT?? ) CREATE MON HEX 3F C, 6EB1 , SMUDGE HERE 1- FENCE ! ;S ( ERROR MESSAGES ) DATA STACK UNDERFLOW DICTIONARY FULL ADDRESS RESOLUTION ERROR HIDES DEFINITION IN NULL VECTOR WRITTEN DISC RANGE? DATA STACK OVERFLOW DISC ERROR! CAN'T EXECUTE A NULL! CONTROL STACK UNDERFLOW CONTROL STACK OVERFLOW ARRAY REFERENCE OUT OF BOUNDS ARRAY DIMENSION NOT VALID NO PROCEDURE TO ENTER ( WAS REGISTER ) COMPILATION ONLY, USE IN DEF EXECUTION ONLY CONDITIONALS NOT PAIRED DEFINITION INCOMPLETE IN PROTECTED DICTIONARY USE ONLY WHEN LOADING OFF CURRENT EDITING SCREEN DECLARE VOCABULARY DEFINITION NOT IN VOCABULARY IN FORWARD BLOCK ALLOCATION LIST CORRUPTED: LOST CAN'T REDEFINE nul! NOT FORWARD REFERENCE ( WAS IMMEDIATE ) ( MORE ERROR MESSAGES ) HAS INCORRECT ADDRESS MODE HAS INCORRECT INDEX MODE OPERAND NOT REGISTER HAS ILLEGAL IMMEDIATE PC OFFSET MUST BE ABSOLUTE ACCUMULATOR OFFSET REQUIRED ILLEGAL MEMORY INDIRECTION ILLEGAL INDEX BASE ILLEGAL TARGET SPECIFIED CAN'T STACK ON SELF DUPLICATE IN LIST REGISTER NOT STACK EMPTY REGISTER LIST IMMEDIATE OPERAND REQUIRED REQUIRES CONDITION COMPILE-TIME STACK UNDERFLOW COMPILE-TIME STACK OVERFLOW ( UTILITIES DUMP QLIST QINDEX ) ( L/SCR ULIST JMR-88NOV16) BIF DEFINITIONS HEX ( UTILITIES IS NOW IN KERNEL ) UTILITIES DEFINITIONS : BYTE-DUMP -DUP IF 0 DO DUP I + C@ 4 .R LOOP ENDIF DROP ; ( BASE > 6) BIF DEFINITIONS : DUMP -DUP IF OVER + SWAP DO I 0 6 D.R I 4 [ UTILITIES ] BYTE-DUMP [ BIF ] 3A EMIT I 4 TYPE CR ?TERMINAL 0< IF KEY 0< IF LEAVE ENDIF ENDIF 4 +LOOP ENDIF ; : QLIST BLOCK [ EDITOR ] QDUMP [ BIF ] 500 88 ! ( CENTER ) ; : QINDEX 1+ SWAP DO I QLIST ." SCREEN=" I 4 /MOD . 3A EMIT . ." BLOCK=" I . KEY 0< IF LEAVE ENDIF LOOP ; UTILITIES DEFINITIONS : L/SCR B/BUF B/SCR C/L */ ; : ULIST ( SCREEN N, FLAG BRK ) DUP SCR ! ." SCR # " . 0 ( F ) L/SCR 0 DO CR I 3 .R SPACE I SCR @ .LINE ?TERMINAL 0< IF ( BREAK? ) KEY 0< IF 1- LEAVE ENDIF ENDIF LOOP CR ; --> ( LIST INDEX TRIAD ) ( JMR-88NOV16 ) BIF DEFINITIONS : LIST ( WIDE OUTPUT ) DECIMAL CR UTILITIES ULIST BIF DROP ; : INDEX ( PRINT COMMENT LINES ) 0C EMIT ( FORM FEED ) CR 1+ SWAP DO CR I 3 .R SPACE 0 I .LINE C/L 49 < IF 1 I .LINE ENDIF ?TERMINAL 0< IF KEY 0< IF LEAVE ENDIF ENDIF LOOP ; : TRIAD ( LIST MULTIPLE ) >PRT 0C EMIT ( FORM FEED ) [ DECIMAL ] UTILITIES L/SCR BIF 22 > IF 2 ELSE 3 ENDIF >R R / R * DUP R> + SWAP DO I UTILITIES ULIST BIF 0< IF LEAVE ENDIF UTILITIES L/SCR BIF DUP 32 = SWAP 22 = OR NOT IF CR CR ENDIF LOOP >VID ; HEX -->( HOME CLS QSAVE SAVE-BUFFERS QCAN ) ( JMR-88DEC10 ) UTILITIES DEFINITIONS HEX : HOME 400 88 ! ; : MID 500 88 ! ; BIF DEFINITIONS : CLS 400 200 60 FILL UTILITIES HOME BIF ; UTILITIES DEFINITIONS : CAN-UP ( CANCEL UPDATE IN BUF) DUP @ 7FFF AND OVER ! ; : W-BUF ( WRITE BUF AT ADR ) DUP 2+ OVER @ 7FFF AND 0 R/W CAN-UP ; : SAVE-BUF ( IF UPDATED ) DUP @ 0< IF W-BUF ENDIF ; BIF DEFINITIONS : QSAVE PREV @ ( SAVE PREVIOUS ) UTILITIES SAVE-BUF BIF DROP ; : SAVE-BUFFERS PREV @ BEGIN UTILITIES SAVE-BUF BIF +BUF NOT UNTIL DROP ; : QCAN PREV @ ( CAN UP OF PREV ) UTILITIES CAN-UP BIF DROP ; --> ( CANCEL-UPDATES RE-QUICK .PREV .BUFFERS QPREV JMR-88DEC10 ) : CANCEL-UPDATES PREV @ BEGIN UTILITIES CAN-UP BIF +BUF NOT UNTIL DROP ; : RE-QUICK ( QUICK OLD PREVIOUS) PREV @ DUP @ 7FFF AND 0 ROT ! [ EDITOR ] QUICK BIF ; UTILITIES DEFINITIONS : .BUF ( QLIST BUFFER, . BLOCK ) DUP @ DUP 7FFF AND DUP QLIST MID ." BLOCK=" . 0< IF ." UPDATED" ENDIF CR ; BIF DEFINITIONS : .BUFFERS PREV @ ( .BUF, PAUSE) BEGIN UTILITIES .BUF BIF +BUF DROP KEY 0< ( BREAK? ) UNTIL DROP ; : .PREV PREV @ UTILITIES .BUF BIF DROP ; : EDIT DUP UTILITIES MID BIF ." BLOCK=" . CR [ EDITOR ] QUICK BIF PREV @ @ 0< IF ." UPDATED" ENDIF ; : QPREV PREV @ @ 7FFF AND EDIT ; -->( QOPY COPY QBACK BACK-UP ) ( JMR-88DEC11 ) : QOPY SWAP BLOCK SWAP BLOCK B/BUF 2/ MOVE UPDATE ; : COPY 2* 2* ( SCREEN ) SWAP 2* 2* DUP 4 + SWAP DO I OVER QOPY 1+ LOOP DROP ; : QBACK 1+ SWAP DO I QLIST I BLOCK DUP [ EDITOR ] QDUMP ." BLOCK " I . ." TO " 0 DRIVE-OFFSET @ I + DUP . KEY 59 = IF 0 R/W ( YES? ) ELSE DROP DROP ENDIF LOOP ; : EEDIT ( ERASE AND EDIT BLOCK ) DUP BLOCK 2- UTILITIES .BUF 2+ MID BIF ." BLOCK=" OVER . ." CLEAR?" CR KEY 59 = IF ( YES? ) B/BUF BLANKS UPDATE ELSE DROP ( DON'T CLEAR ) ENDIF EDIT ; --> ( RES-ERROR FORWARD :RESOLVE :RESOLVE ;RES JMR-16MAY89 ) UTILITIES DEFINITIONS HEX : RES-ERROR ( ADR RESOLUTION ) 3 ERROR ; BIF DEFINITIONS UTILITIES : FORWARD ( REFERENCE HEADER ) CREATE 7E C, ( JMP EXTENDED ) IP, [ ' RES-ERROR CFA , ] ( INIT TO RES-ERROR ) SMUDGE FOREWARD @ 0= IF ( EARLIEST? ) LATEST FOREWARD ! ENDIF ; ASSEMBLER DEFINITIONS UTILITIES : :RESOLVE ( :ASM FORWARD REFS ) ?EXEC !CSP [COMPILE] ' DUP CFA DUP 1+ SWAP C@ 7E - ( JMP) OVER @ ' RES-ERROR CFA - OR 1D ?ERROR ( HEADER? ) HERE SWAP ! ( LINK IT ) FOREWARD @ = IF ( END FORWD? ) 0 FOREWARD ! ENDIF ; IMMEDIATE BIF DEFINITIONS ASSEMBLER : :RES ( RESOLVE : FORWARDS ) [COMPILE] :RESOLVE [ BIF ] ( ASSEMBLE JMP <XCOL, COMPILE) IP, [ LATEST CFA @ , ] ] ; : ;RES [COMPILE] ; SMUDGE ; IMMEDIATE ( PL PTEST ) ( JMR-89AUG25 ) BIF DEFINITIONS DECIMAL : PL 79 0 DO I 33 + EMIT LOOP ; : PT ( PL UNTIL KEY PRESS ) BEGIN PL ?TERMINAL UNTIL ; : PTEST >PRT PT >VID ; ;S ( SLIST ) ( JMR-16OCT90 ) ROOT @ UTILITIES : SLIST ( LIST SCREENS TO PRT ) >PRT 1+ SWAP DO I ULIST 0< IF LEAVE ENDIF LOOP >VID ; ROOT ! ;S ( DISK ACCESS WORDS JMR-900228) HEX : CM! FF48 C! ; : ST@ FF48 C@ ; : TR! FF49 C! ; : TR@ FF49 C@ ; : SE! FF4A C! ; : SE@ FF4A C@ ; : DA! FF4B C! ; : DA@ FF4B C@ ; : DR FF40 ! ; : DWAIT BEGIN ST@ DUP 1 AND WHILE DROP REPEAT ; : 1I DR 40 CM! DWAIT 0 DR . ; : 1O DR 60 CM! DWAIT 0 DR . ; : IN 0 DO DUP 1I LOOP DROP ; : OUT 0 DO DUP 1O LOOP DROP ; : ?ADR 0 FF42 C! 0 FF46 C! 28 OR DR ( MOTOR ON, DBL DNS) C4 FF4C C! DWAIT . FF44 @ DROP 0 FF42 C! 0 FF46 C! FF4E ? FF4E ? FF4E ? ; ;S ( NAMES ) ( JMR-89MAY16 ) BIF DEFINITIONS HEX : NAME ( CFA TO NAME ) 2+ NFA ID. ; : NAMES ( DUMP BY NAME ) -DUP IF 2* OVER + SWAP ( 0? ) DO I 0 6 D.R ( ADR ) I @ DUP 0 5 D.R ( NUMERIC) 3A EMIT NAME CR ?TERMINAL 0< IF KEY 0< IF LEAVE ENDIF ENDIF 2 +LOOP ENDIF ; ;S ( ^asm-util DREG REGISTERS # DPREG DPR SETDP JMR-88DEC19 ) ASSEMBLER DEFINITIONS HEX VOCABULARY ^asm-util ( HIDDEN ) ^asm-util DEFINITIONS : DREG ( REGISTER OPERANDS ) 0FF0F AND 5245 DCONSTANT ; ASSEMBLER DEFINITIONS ^asm-util ( INDEX IN HI BYTE ) 8B00 DREG D 8608 DREG A 8509 DREG B 8C05 DREG PC 4003 DREG U 6004 DREG S 2002 DREG Y 0001 DREG X EF0A DREG CC EF0B DREG DP ( ALL OPERANDS ARE DBL INTS ) ( ABSOLUTE IS 0 OR -1 HI WORD ) ( DIRECT IS ABSOLUTE IN DPAGE ) 494D CONSTANT # ( HI WORD ) ^asm-util DEFINITIONS ( ASSEMBLY TIME DIRECT PAGE ) 42 USER DPREG ( EMULATOR ) ( INIT DPREG ) UTILITIES DP@ ASSEMBLER ^asm-util DPREG ! ASSEMBLER DEFINITIONS ( ACCESS DPREG ) : DPR [ ^asm-util ] DPREG BIF @ ; : SETDP 0FF00 AND [ ^asm-util ] DPREG BIF ! ; --> ( OFF, ABS, V, PCOFF PCR, ) ( JMR-89JAN2 ) ^asm-util DEFINITIONS : OFF, ( SET IX b0, COMPILE 2 ) OVER DUP 80 < SWAP -81 > AND IF C, C, ( SHORT ) ELSE 1 OR C, , ( LONG ) ENDIF ; : OP, ( COMPILE BYTE OR WORD ) DUP 0FF00 AND IF , ELSE C, ENDIF ; : ABS, >R ( COMPILE ABS ADR OP ) OVER 0FF00 AND DPR = IF R> DROP OP, C, ( DIR PAGE) ELSE R> OR OP, , ( EXT ) ENDIF ; : PCOFF ( ABSOLUTE TO PC REL ) HERE + 1+ - ( CALC OFFSET ) DUP 7F > OVER -80 < OR IF 1- 0 ( WORD OFF ) ELSE -1 ( BYTE OFF ) ENDIF ; : ?ABS ( TRUE IF ABSOLUTE ) DUP NOT 0= = ; ( USE T/F VAL) : PCR, ( COMPILE A PC REL INDEX) >R ?ABS NOT 25 ?ERROR 1 PCOFF IF R> C, C, ( BYTE ) ELSE R> 1 OR C, , ENDIF ; --> ( AUTO MASK, REG, IXOFF, EI, ) ( JMR-89JAN2 ) ASSEMBLER DEFINITIONS 4155.0082 DCONSTANT -) ( AUTO ) 4155.0081 DCONSTANT )++ ( REG ) 4155.0080 DCONSTANT )+ ( MODE ) 4155.0083 DCONSTANT --) ( CONS) ^asm-util DEFINITIONS : MASK, OR C, ; ( FOR POSTBYTE) : REG, ( REG OFF TO POST-BYTE ) SWAP DUP D DROP = OVER A DROP = OR OVER B DROP = OR NOT 26 ?ERROR SWAB OR C, ; ( REG, USES DUAL CODED REGS ) : IXOFF, ( REGISTER + CONSTANT ) OVER IF OVER ( NON-ZERO? ) DUP 0F > SWAP -10 < OR OVER 10 AND OR ( []? ) IF 88 OR OFF, ( EXTERNAL ) ELSE ( OFFSET IN POST-BYTE) SWAP 1F AND OR C, ENDIF ELSE 84 OR C, DROP ( 0 OFF ) ENDIF ; : EI, ( EXTENDED INDIRECT ) SWAP ?ABS NOT 27 ?ERROR C, , ; --> ( IX, , INDIRECT ) ( JMR-89JAN4 ) : IX, ( COMPILE AN INDEX MODE ) DUP 9F = IF EI, ELSE DUP 8F AND 8C = IF PCR, ELSE SWAP DUP 4155 = IF DROP MASK, ( AUTO ) ELSE DUP 5245 = IF DROP REG, ELSE ?ABS NOT 22 ?ERROR IXOFF, ENDIF ENDIF ENDIF ENDIF ; ASSEMBLER DEFINITIONS : , ( CONVERT TO INDEX ) 5245 = ( REGISTER? ) OVER 00FF AND DUP 0 > SWAP 6 < AND ( X Y U S PC ? ) AND NOT 28 ?ERROR SWAB 4958 ; : ) ( CONVERT TO INDIRECT ) DUP 5245 = ( REGISTER? ) IF ( ASSEMBLER ) , ELSE DUP [ ^asm-util ] ?ABS [ ASSEMBLER ] IF 4958.009F ELSE ( INDEX? ) DUP 4958 = NOT 27 ?ERROR ENDIF ENDIF ( SET BIT 4 ) SWAP 10 OR SWAP ; --> ( ACCM UNARY REG ) ( JMR-89JAN5 ) ^asm-util DEFINITIONS HEX : ACCM ( ENCODE ACCUMULATOR ) SWAP DUP 0FE AND ( A OR B? ) 8 = NOT 29 ?ERROR 1 AND ( MASK B IN? ) IF OR ELSE DROP ENDIF ; : UNARY ( OP-CODE COMPILER ) <BUILDS 0F AND C, ( OP-CODE ) DOES> C@ ( OP-CODE ) OVER 5245 = ( REGISTER? ) IF DUP 0E = 29 ?ERROR ( JMP?) 40 OR ROT 10 ACCM C, DROP ELSE OVER 4958 = ( INDEX? ) IF 60 OR C, DROP IX, ELSE SWAP ?ABS NOT 21 ?ERROR 70 ( EXT BITS ) ABS, ENDIF ENDIF ; : REG ( ENCODE TARGET REG ) DUP C@ 8D = IF C@ 1 ( JSR ) ELSE SWAP 5245 - 29 ?ERROR OVER DUP A DROP = SWAP B DROP = OR IF C@ SWAP 40 ACCM 0 ( BYTE) ELSE SWAP 00FF AND ( REG? ) OVER 1+ C@ ( CT? ) OVER > NOT 29 ?ERROR ( RANGE ) 2* + 2+ @ -1 ( WORD REG ) ENDIF ENDIF ; --> ( #, BINARY REG-REG ) ( JMR-89JAN12 ) : #, ( COMPILE AN IMMEDIATE ) SWAP DUP 0F AND 5 - ( BIT OK) OVER 5 AND 5 = ( ST OR JSR? ) AND 24 ?ERROR OP, IF BIF , [ ^asm-util ] ( WORD) ELSE C, ENDIF ; ( BYTE ) : BINARY ( OP-CODE COMPILER ) <BUILDS 8F AND C, ( A/B OP ) 05 AND DUP C, -DUP IF ( OP CT) 0 DO 11CF AND BIF , ( DXYUS) [ ^asm-util ] LOOP ENDIF DOES> REG ROT ( SOURCE ) DUP 4958 = IF ( INDEX ? ) DROP DROP 20 OR OP, IX, ELSE DUP 494D = ( IMMEDIATE? ) IF DROP #, ELSE ?ABS NOT 21 ?ERROR DROP 10 OR 20 ABS, ENDIF ENDIF ; : REG-REG ( OP-CODE COMPILER ) <BUILDS C, ( OP-CODE ) DOES> C@ C, ( OP-CODE ) 5245 = ROT 5245 = AND NOT 23 ?ERROR ( 2 REGS? ) 0F AND SWAP SWAN 0F0 AND OR C, ; --> ( REG-BITS PACK MOVEM ) ( JMR-89JAN12 ) 0 0B 1 1ARRAY REG-BITS ( PACK ) 0 REG-BITS ( INITIALIZE ) 06 OVER C! 1+ 10 OVER C! 1+ 20 OVER C! 1+ 40 OVER C! 1+ 40 OVER C! 1+ 80 OVER C! 1+ -1 OVER ! 2+ ( UNDEFINED ) 02 OVER C! 1+ 04 OVER C! 1+ 01 OVER C! 1+ 08 SWAP C! ( STABILIZE PACK: UNDEF=ALL ) : PACK >R 0 ( PSH/PUL LIST ) BEGIN OVER 5245 = WHILE SWAP DROP SWAP ( REG ) DUP R = 2A ?ERROR ( SELF? ) 0FF AND REG-BITS C@ ( BIT ) OVER OVER AND 2B ?ERROR OR REPEAT ( ^ IS DUPLICATE?) R> DROP ; : MOVEM ( OP-CODE COMPILER ) <BUILDS 0FD AND C, DOES> ( OP) C@ >R ( OP ) 5245 = OVER 1+ 0FE AND 4 = AND ( S OR U?) NOT 2C ?ERROR R> OVER U DROP = ( SELECT S/U) IF 2 OR ENDIF C, PACK DUP 0= 2D ?ERROR C, ; --> ( BR DCOND CC-IMM IMPLY ) ( JMR-89JAN13 ) ASSEMBLER DEFINITIONS : BR ( COMPILE CONDITIONAL BR ) 434F - 2F ?ERROR ( CONDITION?) [ ^asm-util ] SWAP ( ADR? ) ?ABS NOT 21 ?ERROR SWAP 1 PCOFF IF ( SHORT ) SWAP DUP 0< IF 0FF AND ( BSR ) ELSE 0F AND 20 OR ENDIF C, C, ( BOTH BYTES ) ELSE SWAP DUP 01000 AND IF SWAB 017 AND ( BSR/BRA ) ELSE 0F AND 1020 OR SWAP 1- SWAP ENDIF OP, BIF , ENDIF ; ASSEMBLER ^asm-util DEFINITIONS : DCOND ( CONDITIONAL OPERANDS) 434F DCONSTANT ; : CC-IMM ( OP-CODE COMPILER ) <BUILDS C, ( OP-CODE ) DOES> C@ C, ( OP-CODE ) 494D - 2E ?ERROR ( IMMEDIATE?) C, ; : IMPLY ( OP-CODE COMPILER ) <BUILDS BIF , ( OP-CODE ) DOES> @ OP, ; --> ( MNEMONICS ) ( JMR-89JAN13 ) ASSEMBLER DEFINITIONS ^asm-util 10CE 0CE 108E 8E 0CC 5 86 BINARY LD 10CF 0CF 108F 8F 0CD 5 87 BINARY ST 118C 1183 108C 8C 1083 5 81 BINARY CMP 35 MOVEM PUL 34 MOVEM PSH 46 UNARY ROR 49 UNARY ROL 39 IMPLY RTS 3B IMPLY RTI 0 82 BINARY SBC 978D DCOND SR 1F REG-REG TFR 4D UNARY TST 83 1 80 BINARY SUB 103F IMPLY SWI2 113F IMPLY SWI3 3F IMPLY SWI 13 IMPLY SYNC 0 84 BINARY AND 0 89 BINARY ADC 48 UNARY ASL 47 UNARY ASR 0C3 1 8B BINARY ADD 3A IMPLY ABX 5 DCOND CS 43 UNARY COM 4F UNARY CLR 1600 DCOND AL 0 85 BINARY BIT 4A UNARY DEC 19 IMPLY DAA 2 DCOND HI 0B DCOND MI 7 DCOND EQ 0C DCOND GE 1E REG-REG EXG 4C UNARY INC 0 8D BINARY JSR 4E UNARY JMP 0 88 BINARY EOR 0E DCOND GT 4 DCOND HS 12 IMPLY NOP 3 DCOND LS 0A DCOND PL --> ( MORE MNEMONICS ) ( JMR-89JAN13 ) 44 UNARY LSR 48 UNARY LSL 0D DCOND LT 6 DCOND NE 3D IMPLY MUL 40 UNARY NEG 0 8A BINARY OR 1A CC-IMM ORCC 1 DCOND NV 1D IMPLY SEX 1C CC-IMM ANDCC 3C CC-IMM CWAI 8 DCOND VC 9 DCOND VS 4 DCOND CCLR ( LO LE FOLLOW ) ^asm-util DEFINITIONS 1 4 1 1ARRAY EA-IX ( TRANSLATE) 1 EA-IX ( INITIALIZE ) 0 OVER C! 1+ 1 OVER C! 1+ 3 OVER C! 1+ 2 SWAP C! ASSEMBLER DEFINITIONS : LEA ( OP-CODE ASSEMBLER ) 5245 - 23 ?ERROR ( REGISTER?) 0F BIF AND [ ^asm-util ] EA-IX C@ 30 BIF OR C, 4958 - 21 ?ERROR ( INDEX? ) [ ^asm-util ] IX, ; 0F DCOND LE 5 DCOND LO --> ( [CD] & ! ^ NEXT ) ( JMR-89JAN17 ) ASSEMBLER DEFINITIONS BIF HEX : [CD] ( CFA OF DEF ) -IFIND DROP DUP 0= 0 ?ERROR CFA 0 [COMPILE] DLITERAL ; IMMEDIATE CREATE & [CD] AND JMP SMUDGE CREATE ! [CD] OR JMP SMUDGE CREATE ^ [CD] XOR JMP SMUDGE ASSEMBLER : NEXT )++ Y ) JMP ; --> ( INVERTCC LIF IF ) ( JMR-89FEB3 ) ^asm-util DEFINITIONS HEX CREATE INVERTCC ( CONDITIONS ) 0. U , X LD 434F # X CMP HERE DUP 2+ 0 NE BR ( CC? ) 2. U , D LD ( BSR? ) HERE DUP 2+ 0 MI BR A CLR 1 # B EOR ( TOGGLE CC ) HERE 4 + 0 NE BR ( ALWAYS? ) AL DROP SWAB # A LD 2. U , D ST NEXT ( FILL BR) 1+ HERE OVER 1+ - SWAP C! 1+ HERE OVER 1+ - SWAP C! 2F # D LD D U PSH ( TO ERROR) [CD] ERROR JMP SMUDGE ASSEMBLER DEFINITIONS : LIF ( MARK AND ASM LONG BR ) [ ^asm-util ] INVERTCC [ ASSEMBLER ] >R >R HERE 4146 ( MARK ) [ UTILITIES ] [CD] RES-ERROR [ ASSEMBLER ] R> R> BR ; : IF ( MARK AND ASM SHORT BR ) [ ^asm-util ] INVERTCC [ ASSEMBLER ] >R >R HERE 4146 ( MARK ) OVER 2+ 0 R> R> BR ; --> ( FILL-IN ) ( JMR-89FEB7 ) ^asm-util DEFINITIONS CREATE FILL-IN ( BR OFFSETS ) UTILITIES DP@ 0 X LD DP DP@ @ - ASSEMBLER 0 X , D LD 0. U , D SUB D U PSH ( OFFS) 2. U , X LD 0. X , D LD ( BR) 16 # A CMP ( ALWAYS? ) HERE DUP 2+ 0 EQ BR 0FE # A AND 0F0 # B AND 1020 # D CMP ( LONG? ) HERE DUP 2+ 0 EQ BR ( SHORT BRANCH ) 0F0 # A AND 20 # A CMP ( BR?) UTILITIES [CD] RES-ERROR ASSEMBLER NE BR 0. U , D LD 7E # D ADD A TST UTILITIES [CD] RES-ERROR ASSEMBLER NE BR ( TOO FAR? ) 80 # B SUB 1. X , B ST ( OFFSET ) HERE 4. U , U LEA NEXT ROT 1+ HERE OVER 1+ - SWAP C! 0. U , D LD ( LONG BR ALWAYS) 3 # D SUB 1. X , D ST DUP 0 AL BR SWAP 1+ HERE OVER 1+ - SWAP C! 0. U , D LD ( LONG BR COND ) 4 # D SUB 2. X , D ST 0 AL BR SMUDGE --> ( ELSE LELSE ENDIF ) ( JMR-89FEB6 ) ASSEMBLER DEFINITIONS HEX ^asm-util : ELSE ( SHORT BRANCH, RESOLVE) 4146 ?PAIRS >R NV IF R> FILL-IN ; : LELSE ( LONG BRANCH, RESOLVE) 4146 ?PAIRS >R NV LIF R> FILL-IN ; : ENDIF 4146 ?PAIRS FILL-IN ; : BEGIN HERE 4142 ; : UNTIL ( COND BR TO BEGIN ) >R >R 4142 ?PAIRS 0 R> R> INVERTCC BR ; : WHILE ( COND BR PAST REPEAT ) ROT 4142 ?PAIRS IF DROP 4157 ; : REPEAT ( LOOP, RESOLVE WHILE) 4157 ?PAIRS SWAP 0 AL BR FILL-IN ; : LWHILE ( LONG WHILE ) ROT 4142 ?PAIRS LIF DROP 4157 ; --> ( :ASM ;ASM ) ( JMR-89MAR28 ) ASSEMBLER DEFINITIONS HEX : :ASM CREATE !CSP ; : ;ASM ?CSP SMUDGE ; : I-CODE ( SHIFT TO HI-LEVEL ) [ ' :ASM CFA @ ] LITERAL [ BIF ] , ( ASMBL JMP <XCOL ) DROOT @ ROOT ! ] ; ( COMPILE) ASSEMBLER : MACHINE ( SHIFT TO LO-LEVEL ) COMPILE (MACHINE) ( IN DEF ) [COMPILE] [ ( NOW INTERPRET ) [COMPILE] ASSEMBLER ; IMMEDIATE ;S ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ( D! D@ ) ( JMR-89FEB16 ) BIF DEFINITIONS ASSEMBLER :ASM D! ( STORE DBL ) X U PUL D U PUL 0. X , D ST D U PUL 2. X , D ST NEXT ;ASM :ASM D@ ( FETCH DBL ) X U PUL 0. X , D LD 2. X , X LD D X U PSH NEXT ;ASM :ASM DOVER ( DOUBLE OVER DOUBLE) 4. U , D LD 6. U , X LD D X U PSH NEXT ;ASM :ASM DSWAP ( SWAP DOUBLES ) 4. U , D LD 0. U , X LD 4. U , X ST 0. U , D ST 6. U , D LD 2. U , X LD 6. U , X ST 2. U , D ST NEXT ;ASM ;S ( [& ,& ]& ) ( JMR-93MAR20 ) BIF DEFINITIONS HEX : [& ( START ARRAY INDEX LIST ) 0 0 4152 ; : ,& ( ACCUMULATE INDEX LIST ) ROT 4152 - 35 ?ERROR ( SPAN?) OVER - DUP F000 AND 33 ?ERROR 1+ SWAP >R ( SAVE LO ) DUP ROT * R> + ( NEW RELOC ) ROT 1+ DUP 7 > 34 ?ERROR SWAP 4152 ; : ]& ( COMPLETE THE ARRAY DEF ) DUP 1- FF00 AND 33 ?ERROR <BUILDS >R ,& DROP ( AR FLAG) R * ( NEW REL ) R> SWAP >R SWAP DUP , ( STORE COUNT ) 0 DO DUP , * LOOP ( SIZES ) DUP , ( ARR SZ ) R> , ( REL ) ALLOT ?STACK DOES> 0 ( SUM ) SWAP DUP 2+ SWAP @ ( COUNT ) 2* OVER + DUP >R ( SAVE END ) SWAP DO ( SUM OF PRODUCTS ) SWAP I @ * + 2 +LOOP R 2+ @ ( RELOCATE ) - DUP 0< OVER R @ < 0= ( BOUNDS? ) OR 0C ?ERROR R> 4 + + ; ( ^ LABEL LOCVOC ) ( JMR-93MAR21 ) BIF DEFINITIONS DECIMAL : ^ ( EXPONENT WITH ?ERROR ) -DUP 0= IF DROP 1 ( N 0 ^ ) ELSE OVER DUP 0= ( 0 N ^ ) SWAP 1 = OR ( 1 N ^ ) OVER 1 = OR ( N 1 ^ ) IF DROP ELSE 1 SWAP 0 DO OVER M* 54 ?ERROR LOOP SWAP DROP ENDIF ENDIF ; : LABEL ( --- ) ( BUILD GOTO ) <BUILDS IMMEDIATE COMPILE-ONLY 0 , DOES> DUP @ IF COMPILE BRANCH @ HERE - 2- , ELSE HERE SWAP ! ENDIF ; : LOCVOC VOCABULARY IMMEDIATE ; : GETNUMBER ( ADR N --- ) 1- OVER 1+ SWAP EXPECT BL ENCLOSE OVER + 0 SWAP C! NUMBER DROP ; : $ DUP . ; ( CS431 TESTPARAMS FACTORIAL ) ( JMR-93MAR24 ) DECIMAL 33 LOAD ( ARRAYS ) DECIMAL 34 LOAD ( ^ LABEL ) BIF DEFINITIONS LOCVOC CS431 CS431 DEFINITIONS DECIMAL 6805 VARIABLE X 6800 VARIABLE Y LOCVOC PARAMSLOCAL PARAMSLOCAL DEFINITIONS 0 VARIABLE A 0 VARIABLE B 0 VARIABLE C 0 VARIABLE X 0 2 2 1ARRAY D CS431 DEFINITIONS PARAMSLOCAL : TESTPARAMS ( N ADR --- ) 1 A ! 2 B ! 3 C ! 4 X ! 4 0 D ! 5 1 D ! 6 2 D ! SWAP ." BY-VAL WAS" . DUP @ 0 D @ * 2 D @ C @ / - 1 D @ A @ * B @ * + SWAP OVER 0 D @ / B @ * 2 D @ * OVER ! ." BY-VAL PARAMETER=" SWAP . ." BY-ADR PARAMETER=" @ . ." LOCAL X=" X @ . ; CS431 : FACTORIAL ( ADR --- ) [ SMUDGE ] ( RECURSIVE ) DUP @ 12 > IF ." TOO BIG " ELSE ." FACTOR" DUP ? DUP @ 2 > IF DUP @ 1- SP@ FACTORIAL OVER @ * OVER ! ENDIF ENDIF ." N!=" ? ; SMUDGE -->( CS431 RECORDS ) ( JMR-93MAR24 ) CS431 DEFINITIONS LOCVOC RECLOC RECLOC DEFINITIONS LOCVOC US US DEFINITIONS 0 VARIABLE ME 0 VARIABLE YOU 0 2 2 1ARRAY THEM RECLOC DEFINITIONS 0 VARIABLE X CS431 DEFINITIONS RECLOC : TESTRECORDS ( --- ) 1 X ! US 3 ME ! 6 YOU ! 2 0 THEM ! 4 1 THEM ! 6 2 THEM ! 2 THEM @ 10 * YOU @ / 1 THEM @ - 0 THEM @ + ME ! ." BEFORE CALL, US.ME=" ME ? ." US.THEM[2]=" 2 THEM ? ME @ 2 THEM TESTPARAMS ." AFTER CALL, LOCAL X=" X ? ." GLOBAL X=" CS431 X ? RECLOC US ." US.ME=" ME ? ." US.THEM[2]=" 2 THEM ? ; CS431 DEFINITIONS --> ( CS431 MAIN ) ( JMR-93MAR24 ) CS431 DEFINITIONS DECIMAL LOCVOC MAINLOC MAINLOC DEFINITIONS LABEL LOOPTO 0 VARIABLE A 0 VARIABLE B 0 VARIABLE C 0 VARIABLE D 0 VARIABLE E 0 VARIABLE F 0 VARIABLE G 0 VARIABLE I 0 VARIABLE J 0 VARIABLE K 0 VARIABLE X 0 VARIABLE CHOICE 0 VARIABLE RESULT [& -1 1 ,& 5 7 ,& 10 11 2 ]& ARRAY 0 79 1 1ARRAY STR 0 VARIABLE AA 0 VARIABLE BB 0 VARIABLE CC 0 VARIABLE DRES CS431 DEFINITIONS MAINLOC ( MIGHT AS WELL START HERE! ) : MAIN ( --- ) ( WE HOPE ) LOOPTO ." CHOICE (1 - 9): " 0 STR 80 GETNUMBER DUP CHOICE ! 0= IF ." I BE DONE!" QUIT ELSE CHOICE @ 1 = IF 1 A ! 2 B ! 3 C ! 4 D ! 5 E ! 6 F ! 7 G ! A @ B @ * $ C @ D @ * $ F @ B @ / $ D @ B @ / $ G @ 100 * $ --> ( CS431 CONTINUE MAIN ) E @ E @ * E @ * $ 23 C @ - $ B @ G @ B @ - * C @ * $ C @ A @ B @ D @ * + * E @ / $ A @ B @ + C @ + G @ F @ - D @ - * $ E @ F @ + G @ + A @ B @ + / $ G @ MINUS G @ - $ A @ MINUS B @ MINUS * G @ MINUS + $ F @ D @ * MINUS B @ C @ * MINUS / $ + + + + + + + + - + - + + RESULT ! ." RESULT=" RESULT ? ELSE CHOICE @ 2 = IF 2 AA ! 3 BB ! 4 CC ! AA @ AA @ ^ AA @ BB @ ^ + AA @ ^ AA @ CC @ ^ / DRES ! DRES @ RESULT ! ." RESULT=" RESULT ? ELSE CHOICE @ 3 = IF 2 -1 DO BIF I MAINLOC I ! 8 5 DO BIF I MAINLOC J ! 12 10 DO BIF I MAINLOC K ! ." ARRAY AT" I ? J ? K ? --> ( CS431 MAIN CONTINUED ) 0 STR 80 GETNUMBER I @ J @ K @ ARRAY ! LOOP LOOP LOOP 0 RESULT ! 2 -1 DO BIF I MAINLOC I ! 8 5 DO BIF I MAINLOC J ! 12 10 DO BIF I MAINLOC K ! I @ J @ K @ ARRAY @ RESULT +! LOOP LOOP LOOP ." RESULT=" RESULT ? ELSE CHOICE @ 4 = IF 21 0 DO BIF I MAINLOC I ! I @ 0= IF ." ZERO" ELSE I @ 10 < IF ." I=" I ? ELSE I @ 10 = IF 16 I ! R> DROP 16 >R ELSE ." NEAT-O" ENDIF ENDIF ENDIF 2 +LOOP ELSE CHOICE @ 5 = IF 2 A ! 4 B ! 0 X ! ." A BEFORE CALL=" A ? ." B BEFORE CALL=" B ? --> ( CS431 MAIN CONTINUED ) A @ B TESTPARAMS ." AFTER A=" A ? ." AFTER B=" B ? ." GLOBAL X=" CS431 X ? ." MAIN X=" MAINLOC X ? ELSE CHOICE @ 6 = IF 0 STR 80 GETNUMBER SP@ FACTORIAL ." ^:" 0 D. ELSE CHOICE @ 7 = IF TESTRECORDS ELSE CHOICE @ 8 = IF ." NO CASE " ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF CHOICE @ 9 < IF LOOPTO ENDIF ." THE WRONG END TO PRINT" ; ;S
\ No newline at end of file
--- /dev/null
+++ b/testsource/tools.dsk
@@ -0,0 +1 @@
1+0) Index to BIF HI-LEVEL disk 2) Title page, Copr. notice 3) MONITOR CALL TO DEBUG 4) ERROR MESSAGES 6) HIGH LEVEL TOOLS & UTILITIES 7) LIST, INDEX, TRIAD 8) HIGH LEVEL DISK & SCREEN 11) FORWARD REFERENCING 12) PERIPHERAL UTILITIES 13) SLIST 15) DUMP DEFINITION BY NAME 16) ASSEMBLER 32) DOUBLES IN ASSEMBLER 40) HLL COMPILER 64) PAIR ASSOCIATION EXAMPLE 66) A TRY AT DIVIDE BY CONSTANT 100) SARDIS DMC STUFF 144) HOOCH COMPILER REMAINS BIF EDITOR, UTILITIES, ASSEMBLER, AND EXAMPLES VERSION 1.0 COPYRIGHT 1989 JOEL MATTHEW REES THESE ALGORITHMS ARE EXPRESSED IN THREE LANGUAGES: BIF, BIF ASSEMBLER FOR THE MOTOROLA M6809 MICROPROCESSOR, AND HEXADECIMAL MACHINE CODE FORTHE M6809. THE TEXT IS ORGANIZED FOR EDITING ON A 32-COLUMN TERMINAL,SUCH AS IS FOUND ON A RADIO SHACK COLOR COMPUTER 2. THESE ALGORITHMS AND THEIR TEXT ARE INTENDED FOR NO PURPOSEOTHER THAN EXPERIMENTATION, AND NO CLAIMS OR WARRANTIES ARE MADECONCERNING THEIR USEFULNESS IN ANY PARTICULAR APPLICATION. PUBLISHED 1989 JOEL MATTHEW REES SOUTH SALT LAKE CITY, UTAH ( CALL TO MONITOR, IF SWI IS BREAKPOINT JMR-88OCT?? ) CREATE MON HEX 3F C, 6EB1 , SMUDGE HERE 1- FENCE ! ;S ( ERROR MESSAGES ) DATA STACK UNDERFLOW DICTIONARY FULL ADDRESS RESOLUTION ERROR HIDES DEFINITION IN NULL VECTOR WRITTEN DISC RANGE? DATA STACK OVERFLOW DISC ERROR! CAN'T EXECUTE A NULL! CONTROL STACK UNDERFLOW CONTROL STACK OVERFLOW ARRAY REFERENCE OUT OF BOUNDS ARRAY DIMENSION NOT VALID NO PROCEDURE TO ENTER ( WAS REGISTER ) COMPILATION ONLY, USE IN DEF EXECUTION ONLY CONDITIONALS NOT PAIRED DEFINITION INCOMPLETE IN PROTECTED DICTIONARY USE ONLY WHEN LOADING OFF CURRENT EDITING SCREEN DECLARE VOCABULARY DEFINITION NOT IN VOCABULARY IN FORWARD BLOCK ALLOCATION LIST CORRUPTED: LOST CAN'T REDEFINE nul! NOT FORWARD REFERENCE ( WAS IMMEDIATE ) ( MORE ERROR MESSAGES ) HAS INCORRECT ADDRESS MODE HAS INCORRECT INDEX MODE OPERAND NOT REGISTER HAS ILLEGAL IMMEDIATE PC OFFSET MUST BE ABSOLUTE ACCUMULATOR OFFSET REQUIRED ILLEGAL MEMORY INDIRECTION ILLEGAL INDEX BASE ILLEGAL TARGET SPECIFIED CAN'T STACK ON SELF DUPLICATE IN LIST REGISTER NOT STACK EMPTY REGISTER LIST IMMEDIATE OPERAND REQUIRED REQUIRES CONDITION COMPILE-TIME STACK UNDERFLOW COMPILE-TIME STACK OVERFLOW ( UTILITIES DUMP QLIST QINDEX ) ( L/SCR ULIST JMR-88NOV16) BIF DEFINITIONS HEX ( UTILITIES IS NOW IN KERNEL ) UTILITIES DEFINITIONS : BYTE-DUMP -DUP IF 0 DO DUP I + C@ 4 .R LOOP ENDIF DROP ; ( BASE > 6) BIF DEFINITIONS : DUMP -DUP IF OVER + SWAP DO I 0 6 D.R I 4 [ UTILITIES ] BYTE-DUMP [ BIF ] 3A EMIT I 4 TYPE CR ?TERMINAL 0< IF KEY 0< IF LEAVE ENDIF ENDIF 4 +LOOP ENDIF ; : QLIST BLOCK [ EDITOR ] QDUMP [ BIF ] 500 88 ! ( CENTER ) ; : QINDEX 1+ SWAP DO I QLIST ." SCREEN=" I 4 /MOD . 3A EMIT . ." BLOCK=" I . KEY 0< IF LEAVE ENDIF LOOP ; UTILITIES DEFINITIONS : L/SCR B/BUF B/SCR C/L */ ; : ULIST ( SCREEN N, FLAG BRK ) DUP SCR ! ." SCR # " . 0 ( F ) L/SCR 0 DO CR I 3 .R SPACE I SCR @ .LINE ?TERMINAL 0< IF ( BREAK? ) KEY 0< IF 1- LEAVE ENDIF ENDIF LOOP CR ; --> ( LIST INDEX TRIAD ) ( JMR-88NOV16 ) BIF DEFINITIONS : LIST ( WIDE OUTPUT ) DECIMAL CR UTILITIES ULIST BIF DROP ; : INDEX ( PRINT COMMENT LINES ) 0C EMIT ( FORM FEED ) CR 1+ SWAP DO CR I 3 .R SPACE 0 I .LINE C/L 49 < IF 1 I .LINE ENDIF ?TERMINAL 0< IF KEY 0< IF LEAVE ENDIF ENDIF LOOP ; : TRIAD ( LIST MULTIPLE ) >PRT 0C EMIT ( FORM FEED ) [ DECIMAL ] UTILITIES L/SCR BIF 22 > IF 2 ELSE 3 ENDIF >R R / R * DUP R> + SWAP DO I UTILITIES ULIST BIF 0< IF LEAVE ENDIF UTILITIES L/SCR BIF DUP 32 = SWAP 22 = OR NOT IF CR CR ENDIF LOOP >VID ; HEX -->( HOME CLS QSAVE SAVE-BUFFERS QCAN ) ( JMR-88DEC10 ) UTILITIES DEFINITIONS HEX : HOME 400 88 ! ; : MID 500 88 ! ; BIF DEFINITIONS : CLS 400 200 60 FILL UTILITIES HOME BIF ; UTILITIES DEFINITIONS : CAN-UP ( CANCEL UPDATE IN BUF) DUP @ 7FFF AND OVER ! ; : W-BUF ( WRITE BUF AT ADR ) DUP 2+ OVER @ 7FFF AND 0 R/W CAN-UP ; : SAVE-BUF ( IF UPDATED ) DUP @ 0< IF W-BUF ENDIF ; BIF DEFINITIONS : QSAVE PREV @ ( SAVE PREVIOUS ) UTILITIES SAVE-BUF BIF DROP ; : SAVE-BUFFERS PREV @ BEGIN UTILITIES SAVE-BUF BIF +BUF NOT UNTIL DROP ; : QCAN PREV @ ( CAN UP OF PREV ) UTILITIES CAN-UP BIF DROP ; --> ( CANCEL-UPDATES RE-QUICK .PREV .BUFFERS QPREV JMR-88DEC10 ) : CANCEL-UPDATES PREV @ BEGIN UTILITIES CAN-UP BIF +BUF NOT UNTIL DROP ; : RE-QUICK ( QUICK OLD PREVIOUS) PREV @ DUP @ 7FFF AND 0 ROT ! [ EDITOR ] QUICK BIF ; UTILITIES DEFINITIONS : .BUF ( QLIST BUFFER, . BLOCK ) DUP @ DUP 7FFF AND DUP QLIST MID ." BLOCK=" . 0< IF ." UPDATED" ENDIF CR ; BIF DEFINITIONS : .BUFFERS PREV @ ( .BUF, PAUSE) BEGIN UTILITIES .BUF BIF +BUF DROP KEY 0< ( BREAK? ) UNTIL DROP ; : .PREV PREV @ UTILITIES .BUF BIF DROP ; : EDIT DUP UTILITIES MID BIF ." BLOCK=" . CR [ EDITOR ] QUICK BIF PREV @ @ 0< IF ." UPDATED" ENDIF ; : QPREV PREV @ @ 7FFF AND EDIT ; -->( QOPY COPY QBACK BACK-UP ) ( JMR-88DEC11 ) : QOPY SWAP BLOCK SWAP BLOCK B/BUF 2/ MOVE UPDATE ; : COPY 2* 2* ( SCREEN ) SWAP 2* 2* DUP 4 + SWAP DO I OVER QOPY 1+ LOOP DROP ; : QBACK 1+ SWAP DO I QLIST I BLOCK DUP [ EDITOR ] QDUMP ." BLOCK " I . ." TO " 0 DRIVE-OFFSET @ I + DUP . KEY 59 = IF 0 R/W ( YES? ) ELSE DROP DROP ENDIF LOOP ; : EEDIT ( ERASE AND EDIT BLOCK ) DUP BLOCK 2- UTILITIES .BUF 2+ MID BIF ." BLOCK=" OVER . ." CLEAR?" CR KEY 59 = IF ( YES? ) B/BUF BLANKS UPDATE ELSE DROP ( DON'T CLEAR ) ENDIF EDIT ; --> ( RES-ERROR FORWARD :RESOLVE :RESOLVE ;RES JMR-16MAY89 ) UTILITIES DEFINITIONS HEX : RES-ERROR ( ADR RESOLUTION ) 3 ERROR ; BIF DEFINITIONS UTILITIES : FORWARD ( REFERENCE HEADER ) CREATE 7E C, ( JMP EXTENDED ) IP, [ ' RES-ERROR CFA , ] ( INIT TO RES-ERROR ) SMUDGE FOREWARD @ 0= IF ( EARLIEST? ) LATEST FOREWARD ! ENDIF ; ASSEMBLER DEFINITIONS UTILITIES : :RESOLVE ( :ASM FORWARD REFS ) ?EXEC !CSP [COMPILE] ' DUP CFA DUP 1+ SWAP C@ 7E - ( JMP) OVER @ ' RES-ERROR CFA - OR 1D ?ERROR ( HEADER? ) HERE SWAP ! ( LINK IT ) FOREWARD @ = IF ( END FORWD? ) 0 FOREWARD ! ENDIF ; IMMEDIATE BIF DEFINITIONS ASSEMBLER : :RES ( RESOLVE : FORWARDS ) [COMPILE] :RESOLVE [ BIF ] ( ASSEMBLE JMP <XCOL, COMPILE) IP, [ LATEST CFA @ , ] ] ; : ;RES [COMPILE] ; SMUDGE ; IMMEDIATE ( PL PTEST ) ( JMR-89AUG25 ) BIF DEFINITIONS DECIMAL : PL 79 0 DO I 33 + EMIT LOOP ; : PT ( PL UNTIL KEY PRESS ) BEGIN PL ?TERMINAL UNTIL ; : PTEST >PRT PT >VID ; ;S ( SLIST ) ( JMR-16OCT90 ) ROOT @ UTILITIES : SLIST ( LIST SCREENS TO PRT ) >PRT 1+ SWAP DO I ULIST 0< IF LEAVE ENDIF LOOP >VID ; ROOT ! ;S ( DISK ACCESS WORDS JMR-900228) HEX : CM! FF48 C! ; : ST@ FF48 C@ ; : TR! FF49 C! ; : TR@ FF49 C@ ; : SE! FF4A C! ; : SE@ FF4A C@ ; : DA! FF4B C! ; : DA@ FF4B C@ ; : DR FF40 ! ; : DWAIT BEGIN ST@ DUP 1 AND WHILE DROP REPEAT ; : 1I DR 40 CM! DWAIT 0 DR . ; : 1O DR 60 CM! DWAIT 0 DR . ; : IN 0 DO DUP 1I LOOP DROP ; : OUT 0 DO DUP 1O LOOP DROP ; : ?ADR 0 FF42 C! 0 FF46 C! 28 OR DR ( MOTOR ON, DBL DNS) C4 FF4C C! DWAIT . FF44 @ DROP 0 FF42 C! 0 FF46 C! FF4E ? FF4E ? FF4E ? ; ;S ( NAMES ) ( JMR-89MAY16 ) BIF DEFINITIONS HEX : NAME ( CFA TO NAME ) 2+ NFA ID. ; : NAMES ( DUMP BY NAME ) -DUP IF 2* OVER + SWAP ( 0? ) DO I 0 6 D.R ( ADR ) I @ DUP 0 5 D.R ( NUMERIC) 3A EMIT NAME CR ?TERMINAL 0< IF KEY 0< IF LEAVE ENDIF ENDIF 2 +LOOP ENDIF ; ;S ( ^asm-util DREG REGISTERS # DPREG DPR SETDP JMR-88DEC19 ) ASSEMBLER DEFINITIONS HEX VOCABULARY ^asm-util ( HIDDEN ) ^asm-util DEFINITIONS : DREG ( REGISTER OPERANDS ) 0FF0F AND 5245 DCONSTANT ; ASSEMBLER DEFINITIONS ^asm-util ( INDEX IN HI BYTE ) 8B00 DREG D 8608 DREG A 8509 DREG B 8C05 DREG PC 4003 DREG U 6004 DREG S 2002 DREG Y 0001 DREG X EF0A DREG CC EF0B DREG DP ( ALL OPERANDS ARE DBL INTS ) ( ABSOLUTE IS 0 OR -1 HI WORD ) ( DIRECT IS ABSOLUTE IN DPAGE ) 494D CONSTANT # ( HI WORD ) ^asm-util DEFINITIONS ( ASSEMBLY TIME DIRECT PAGE ) 42 USER DPREG ( EMULATOR ) ( INIT DPREG ) UTILITIES DP@ ASSEMBLER ^asm-util DPREG ! ASSEMBLER DEFINITIONS ( ACCESS DPREG ) : DPR [ ^asm-util ] DPREG BIF @ ; : SETDP 0FF00 AND [ ^asm-util ] DPREG BIF ! ; --> ( OFF, ABS, V, PCOFF PCR, ) ( JMR-89JAN2 ) ^asm-util DEFINITIONS : OFF, ( SET IX b0, COMPILE 2 ) OVER DUP 80 < SWAP -81 > AND IF C, C, ( SHORT ) ELSE 1 OR C, , ( LONG ) ENDIF ; : OP, ( COMPILE BYTE OR WORD ) DUP 0FF00 AND IF , ELSE C, ENDIF ; : ABS, >R ( COMPILE ABS ADR OP ) OVER 0FF00 AND DPR = IF R> DROP OP, C, ( DIR PAGE) ELSE R> OR OP, , ( EXT ) ENDIF ; : PCOFF ( ABSOLUTE TO PC REL ) HERE + 1+ - ( CALC OFFSET ) DUP 7F > OVER -80 < OR IF 1- 0 ( WORD OFF ) ELSE -1 ( BYTE OFF ) ENDIF ; : ?ABS ( TRUE IF ABSOLUTE ) DUP NOT 0= = ; ( USE T/F VAL) : PCR, ( COMPILE A PC REL INDEX) >R ?ABS NOT 25 ?ERROR 1 PCOFF IF R> C, C, ( BYTE ) ELSE R> 1 OR C, , ENDIF ; --> ( AUTO MASK, REG, IXOFF, EI, ) ( JMR-89JAN2 ) ASSEMBLER DEFINITIONS 4155.0082 DCONSTANT -) ( AUTO ) 4155.0081 DCONSTANT )++ ( REG ) 4155.0080 DCONSTANT )+ ( MODE ) 4155.0083 DCONSTANT --) ( CONS) ^asm-util DEFINITIONS : MASK, OR C, ; ( FOR POSTBYTE) : REG, ( REG OFF TO POST-BYTE ) SWAP DUP D DROP = OVER A DROP = OR OVER B DROP = OR NOT 26 ?ERROR SWAB OR C, ; ( REG, USES DUAL CODED REGS ) : IXOFF, ( REGISTER + CONSTANT ) OVER IF OVER ( NON-ZERO? ) DUP 0F > SWAP -10 < OR OVER 10 AND OR ( []? ) IF 88 OR OFF, ( EXTERNAL ) ELSE ( OFFSET IN POST-BYTE) SWAP 1F AND OR C, ENDIF ELSE 84 OR C, DROP ( 0 OFF ) ENDIF ; : EI, ( EXTENDED INDIRECT ) SWAP ?ABS NOT 27 ?ERROR C, , ; --> ( IX, , INDIRECT ) ( JMR-89JAN4 ) : IX, ( COMPILE AN INDEX MODE ) DUP 9F = IF EI, ELSE DUP 8F AND 8C = IF PCR, ELSE SWAP DUP 4155 = IF DROP MASK, ( AUTO ) ELSE DUP 5245 = IF DROP REG, ELSE ?ABS NOT 22 ?ERROR IXOFF, ENDIF ENDIF ENDIF ENDIF ; ASSEMBLER DEFINITIONS : , ( CONVERT TO INDEX ) 5245 = ( REGISTER? ) OVER 00FF AND DUP 0 > SWAP 6 < AND ( X Y U S PC ? ) AND NOT 28 ?ERROR SWAB 4958 ; : ) ( CONVERT TO INDIRECT ) DUP 5245 = ( REGISTER? ) IF ( ASSEMBLER ) , ELSE DUP [ ^asm-util ] ?ABS [ ASSEMBLER ] IF 4958.009F ELSE ( INDEX? ) DUP 4958 = NOT 27 ?ERROR ENDIF ENDIF ( SET BIT 4 ) SWAP 10 OR SWAP ; --> ( ACCM UNARY REG ) ( JMR-89JAN5 ) ^asm-util DEFINITIONS HEX : ACCM ( ENCODE ACCUMULATOR ) SWAP DUP 0FE AND ( A OR B? ) 8 = NOT 29 ?ERROR 1 AND ( MASK B IN? ) IF OR ELSE DROP ENDIF ; : UNARY ( OP-CODE COMPILER ) <BUILDS 0F AND C, ( OP-CODE ) DOES> C@ ( OP-CODE ) OVER 5245 = ( REGISTER? ) IF DUP 0E = 29 ?ERROR ( JMP?) 40 OR ROT 10 ACCM C, DROP ELSE OVER 4958 = ( INDEX? ) IF 60 OR C, DROP IX, ELSE SWAP ?ABS NOT 21 ?ERROR 70 ( EXT BITS ) ABS, ENDIF ENDIF ; : REG ( ENCODE TARGET REG ) DUP C@ 8D = IF C@ 1 ( JSR ) ELSE SWAP 5245 - 29 ?ERROR OVER DUP A DROP = SWAP B DROP = OR IF C@ SWAP 40 ACCM 0 ( BYTE) ELSE SWAP 00FF AND ( REG? ) OVER 1+ C@ ( CT? ) OVER > NOT 29 ?ERROR ( RANGE ) 2* + 2+ @ -1 ( WORD REG ) ENDIF ENDIF ; --> ( #, BINARY REG-REG ) ( JMR-89JAN12 ) : #, ( COMPILE AN IMMEDIATE ) SWAP DUP 0F AND 5 - ( BIT OK) OVER 5 AND 5 = ( ST OR JSR? ) AND 24 ?ERROR OP, IF BIF , [ ^asm-util ] ( WORD) ELSE C, ENDIF ; ( BYTE ) : BINARY ( OP-CODE COMPILER ) <BUILDS 8F AND C, ( A/B OP ) 05 AND DUP C, -DUP IF ( OP CT) 0 DO 11CF AND BIF , ( DXYUS) [ ^asm-util ] LOOP ENDIF DOES> REG ROT ( SOURCE ) DUP 4958 = IF ( INDEX ? ) DROP DROP 20 OR OP, IX, ELSE DUP 494D = ( IMMEDIATE? ) IF DROP #, ELSE ?ABS NOT 21 ?ERROR DROP 10 OR 20 ABS, ENDIF ENDIF ; : REG-REG ( OP-CODE COMPILER ) <BUILDS C, ( OP-CODE ) DOES> C@ C, ( OP-CODE ) 5245 = ROT 5245 = AND NOT 23 ?ERROR ( 2 REGS? ) 0F AND SWAP SWAN 0F0 AND OR C, ; --> ( REG-BITS PACK MOVEM ) ( JMR-89JAN12 ) 0 0B 1 1ARRAY REG-BITS ( PACK ) 0 REG-BITS ( INITIALIZE ) 06 OVER C! 1+ 10 OVER C! 1+ 20 OVER C! 1+ 40 OVER C! 1+ 40 OVER C! 1+ 80 OVER C! 1+ -1 OVER ! 2+ ( UNDEFINED ) 02 OVER C! 1+ 04 OVER C! 1+ 01 OVER C! 1+ 08 SWAP C! ( STABILIZE PACK: UNDEF=ALL ) : PACK >R 0 ( PSH/PUL LIST ) BEGIN OVER 5245 = WHILE SWAP DROP SWAP ( REG ) DUP R = 2A ?ERROR ( SELF? ) 0FF AND REG-BITS C@ ( BIT ) OVER OVER AND 2B ?ERROR OR REPEAT ( ^ IS DUPLICATE?) R> DROP ; : MOVEM ( OP-CODE COMPILER ) <BUILDS 0FD AND C, DOES> ( OP) C@ >R ( OP ) 5245 = OVER 1+ 0FE AND 4 = AND ( S OR U?) NOT 2C ?ERROR R> OVER U DROP = ( SELECT S/U) IF 2 OR ENDIF C, PACK DUP 0= 2D ?ERROR C, ; --> ( BR DCOND CC-IMM IMPLY ) ( JMR-89JAN13 ) ASSEMBLER DEFINITIONS : BR ( COMPILE CONDITIONAL BR ) 434F - 2F ?ERROR ( CONDITION?) [ ^asm-util ] SWAP ( ADR? ) ?ABS NOT 21 ?ERROR SWAP 1 PCOFF IF ( SHORT ) SWAP DUP 0< IF 0FF AND ( BSR ) ELSE 0F AND 20 OR ENDIF C, C, ( BOTH BYTES ) ELSE SWAP DUP 01000 AND IF SWAB 017 AND ( BSR/BRA ) ELSE 0F AND 1020 OR SWAP 1- SWAP ENDIF OP, BIF , ENDIF ; ASSEMBLER ^asm-util DEFINITIONS : DCOND ( CONDITIONAL OPERANDS) 434F DCONSTANT ; : CC-IMM ( OP-CODE COMPILER ) <BUILDS C, ( OP-CODE ) DOES> C@ C, ( OP-CODE ) 494D - 2E ?ERROR ( IMMEDIATE?) C, ; : IMPLY ( OP-CODE COMPILER ) <BUILDS BIF , ( OP-CODE ) DOES> @ OP, ; --> ( MNEMONICS ) ( JMR-89JAN13 ) ASSEMBLER DEFINITIONS ^asm-util 10CE 0CE 108E 8E 0CC 5 86 BINARY LD 10CF 0CF 108F 8F 0CD 5 87 BINARY ST 118C 1183 108C 8C 1083 5 81 BINARY CMP 35 MOVEM PUL 34 MOVEM PSH 46 UNARY ROR 49 UNARY ROL 39 IMPLY RTS 3B IMPLY RTI 0 82 BINARY SBC 978D DCOND SR 1F REG-REG TFR 4D UNARY TST 83 1 80 BINARY SUB 103F IMPLY SWI2 113F IMPLY SWI3 3F IMPLY SWI 13 IMPLY SYNC 0 84 BINARY AND 0 89 BINARY ADC 48 UNARY ASL 47 UNARY ASR 0C3 1 8B BINARY ADD 3A IMPLY ABX 5 DCOND CS 43 UNARY COM 4F UNARY CLR 1600 DCOND AL 0 85 BINARY BIT 4A UNARY DEC 19 IMPLY DAA 2 DCOND HI 0B DCOND MI 7 DCOND EQ 0C DCOND GE 1E REG-REG EXG 4C UNARY INC 0 8D BINARY JSR 4E UNARY JMP 0 88 BINARY EOR 0E DCOND GT 4 DCOND HS 12 IMPLY NOP 3 DCOND LS 0A DCOND PL --> ( MORE MNEMONICS ) ( JMR-89JAN13 ) 44 UNARY LSR 48 UNARY LSL 0D DCOND LT 6 DCOND NE 3D IMPLY MUL 40 UNARY NEG 0 8A BINARY OR 1A CC-IMM ORCC 1 DCOND NV 1D IMPLY SEX 1C CC-IMM ANDCC 3C CC-IMM CWAI 8 DCOND VC 9 DCOND VS 4 DCOND CCLR ( LO LE FOLLOW ) ^asm-util DEFINITIONS 1 4 1 1ARRAY EA-IX ( TRANSLATE) 1 EA-IX ( INITIALIZE ) 0 OVER C! 1+ 1 OVER C! 1+ 3 OVER C! 1+ 2 SWAP C! ASSEMBLER DEFINITIONS : LEA ( OP-CODE ASSEMBLER ) 5245 - 23 ?ERROR ( REGISTER?) 0F BIF AND [ ^asm-util ] EA-IX C@ 30 BIF OR C, 4958 - 21 ?ERROR ( INDEX? ) [ ^asm-util ] IX, ; 0F DCOND LE 5 DCOND LO --> ( [CD] & ! ^ NEXT ) ( JMR-89JAN17 ) ASSEMBLER DEFINITIONS BIF HEX : [CD] ( CFA OF DEF ) -IFIND DROP DUP 0= 0 ?ERROR CFA 0 [COMPILE] DLITERAL ; IMMEDIATE CREATE & [CD] AND JMP SMUDGE CREATE ! [CD] OR JMP SMUDGE CREATE ^ [CD] XOR JMP SMUDGE ASSEMBLER : NEXT )++ Y ) JMP ; --> ( INVERTCC LIF IF ) ( JMR-89FEB3 ) ^asm-util DEFINITIONS HEX CREATE INVERTCC ( CONDITIONS ) 0. U , X LD 434F # X CMP HERE DUP 2+ 0 NE BR ( CC? ) 2. U , D LD ( BSR? ) HERE DUP 2+ 0 MI BR A CLR 1 # B EOR ( TOGGLE CC ) HERE 4 + 0 NE BR ( ALWAYS? ) AL DROP SWAB # A LD 2. U , D ST NEXT ( FILL BR) 1+ HERE OVER 1+ - SWAP C! 1+ HERE OVER 1+ - SWAP C! 2F # D LD D U PSH ( TO ERROR) [CD] ERROR JMP SMUDGE ASSEMBLER DEFINITIONS : LIF ( MARK AND ASM LONG BR ) [ ^asm-util ] INVERTCC [ ASSEMBLER ] >R >R HERE 4146 ( MARK ) [ UTILITIES ] [CD] RES-ERROR [ ASSEMBLER ] R> R> BR ; : IF ( MARK AND ASM SHORT BR ) [ ^asm-util ] INVERTCC [ ASSEMBLER ] >R >R HERE 4146 ( MARK ) OVER 2+ 0 R> R> BR ; --> ( FILL-IN ) ( JMR-89FEB7 ) ^asm-util DEFINITIONS CREATE FILL-IN ( BR OFFSETS ) UTILITIES DP@ 0 X LD DP DP@ @ - ASSEMBLER 0 X , D LD 0. U , D SUB D U PSH ( OFFS) 2. U , X LD 0. X , D LD ( BR) 16 # A CMP ( ALWAYS? ) HERE DUP 2+ 0 EQ BR 0FE # A AND 0F0 # B AND 1020 # D CMP ( LONG? ) HERE DUP 2+ 0 EQ BR ( SHORT BRANCH ) 0F0 # A AND 20 # A CMP ( BR?) UTILITIES [CD] RES-ERROR ASSEMBLER NE BR 0. U , D LD 7E # D ADD A TST UTILITIES [CD] RES-ERROR ASSEMBLER NE BR ( TOO FAR? ) 80 # B SUB 1. X , B ST ( OFFSET ) HERE 4. U , U LEA NEXT ROT 1+ HERE OVER 1+ - SWAP C! 0. U , D LD ( LONG BR ALWAYS) 3 # D SUB 1. X , D ST DUP 0 AL BR SWAP 1+ HERE OVER 1+ - SWAP C! 0. U , D LD ( LONG BR COND ) 4 # D SUB 2. X , D ST 0 AL BR SMUDGE --> ( ELSE LELSE ENDIF ) ( JMR-89FEB6 ) ASSEMBLER DEFINITIONS HEX ^asm-util : ELSE ( SHORT BRANCH, RESOLVE) 4146 ?PAIRS >R NV IF R> FILL-IN ; : LELSE ( LONG BRANCH, RESOLVE) 4146 ?PAIRS >R NV LIF R> FILL-IN ; : ENDIF 4146 ?PAIRS FILL-IN ; : BEGIN HERE 4142 ; : UNTIL ( COND BR TO BEGIN ) >R >R 4142 ?PAIRS 0 R> R> INVERTCC BR ; : WHILE ( COND BR PAST REPEAT ) ROT 4142 ?PAIRS IF DROP 4157 ; : REPEAT ( LOOP, RESOLVE WHILE) 4157 ?PAIRS SWAP 0 AL BR FILL-IN ; : LWHILE ( LONG WHILE ) ROT 4142 ?PAIRS LIF DROP 4157 ; --> ( :ASM ;ASM ) ( JMR-89MAR28 ) ASSEMBLER DEFINITIONS HEX : :ASM CREATE !CSP ; : ;ASM ?CSP SMUDGE ; : I-CODE ( SHIFT TO HI-LEVEL ) [ ' :ASM CFA @ ] LITERAL [ BIF ] , ( ASMBL JMP <XCOL ) DROOT @ ROOT ! ] ; ( COMPILE) ASSEMBLER : MACHINE ( SHIFT TO LO-LEVEL ) COMPILE (MACHINE) ( IN DEF ) [COMPILE] [ ( NOW INTERPRET ) [COMPILE] ASSEMBLER ; IMMEDIATE ;S ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ( D! D@ ) ( JMR-89FEB16 ) BIF DEFINITIONS ASSEMBLER :ASM D! ( STORE DBL ) X U PUL D U PUL 0. X , D ST D U PUL 2. X , D ST NEXT ;ASM :ASM D@ ( FETCH DBL ) X U PUL 0. X , D LD 2. X , X LD D X U PSH NEXT ;ASM :ASM DOVER ( DOUBLE OVER DOUBLE) 4. U , D LD 6. U , X LD D X U PSH NEXT ;ASM :ASM DSWAP ( SWAP DOUBLES ) 4. U , D LD 0. U , X LD 4. U , X ST 0. U , D ST 6. U , D LD 2. U , X LD 6. U , X ST 2. U , D ST NEXT ;ASM ;S
\ No newline at end of file
旧リポジトリブラウザで表示