Annotation of qemu/roms/SLOF/slof/fs/fcode/evaluator.fs, revision 1.1

1.1     ! root        1: \ *****************************************************************************
        !             2: \ * Copyright (c) 2004, 2008 IBM Corporation
        !             3: \ * All rights reserved.
        !             4: \ * This program and the accompanying materials
        !             5: \ * are made available under the terms of the BSD License
        !             6: \ * which accompanies this distribution, and is available at
        !             7: \ * http://www.opensource.org/licenses/bsd-license.php
        !             8: \ *
        !             9: \ * Contributors:
        !            10: \ *     IBM Corporation - initial implementation
        !            11: \ ****************************************************************************/
        !            12: 
        !            13: ( eva - gordons fcode bytecode evaluator )
        !            14: 
        !            15: hex
        !            16: 
        !            17: -1 constant true
        !            18:  0 constant false
        !            19: 
        !            20: variable ip
        !            21: variable fcode-end 
        !            22: variable fcode-num
        !            23:  1 value fcode-spread
        !            24: 16 value fcode-offset
        !            25: false value eva-debug?
        !            26: false value fcode-debug?
        !            27: defer fcode-rb@
        !            28: defer fcode@
        !            29: 
        !            30: ' c@ to fcode-rb@
        !            31: 
        !            32: create token-table 2000 cells allot    \ 1000h = 4096d
        !            33: 
        !            34: include core.fs
        !            35: include 1275.fs
        !            36: include tokens.fs
        !            37: 
        !            38: 0 value buff
        !            39: 0 value buff-size
        !            40: 
        !            41: ( ---------------------------------------------------- )
        !            42: 
        !            43: ' read-fcode# to fcode@
        !            44: 
        !            45: : step next-ip fcode@ exec ; immediate
        !            46: ( ---------------------------------------------------- )
        !            47: 
        !            48: : rom-code-ignored ( image# name len -- )
        !            49:     diagnostic-mode? IF type ."  code found in image " .  ." , ignoring ..." cr
        !            50:     ELSE 3drop THEN
        !            51: ;
        !            52: 
        !            53: : pci-find-rom ( baseaddr -- addr )
        !            54:     -8 and dup IF
        !            55:        dup rw@ 55aa = IF
        !            56:                diagnostic-mode? IF ." Device ROM found at " dup . cr THEN
        !            57:        ELSE drop 0 THEN
        !            58:     THEN
        !            59: ;
        !            60: 
        !            61: : pci-find-fcode ( baseaddr -- addr len | false )
        !            62:     pci-find-rom ?dup IF
        !            63:        dup 18 + rw@ wbflip +
        !            64:        0 swap BEGIN
        !            65:            dup rl@ 50434952 ( 'PCIR') <> IF
        !            66:                diagnostic-mode? IF
        !            67:                        ." Invalid PCI Data structure, ignoring ROM contents" cr
        !            68:                THEN
        !            69:                2drop false EXIT
        !            70:            THEN
        !            71:            dup 14 + rb@ CASE
        !            72:                0 OF over . s" Intel x86 BIOS" rom-code-ignored ENDOF
        !            73:                1 OF swap diagnostic-mode? IF
        !            74:                                ." Open Firmware FCode found at image " . cr
        !            75:                        ELSE drop THEN
        !            76:                        dup a + rw@ wbflip over + \ This code start
        !            77:                        swap 10 + rw@ wbflip 200 * \ This code length
        !            78:                        EXIT
        !            79:                ENDOF
        !            80:                2 OF over . s" HP PA RISC" rom-code-ignored ENDOF
        !            81:                3 OF over . s" EFI" rom-code-ignored ENDOF
        !            82:                dup OF over . s" Unknown type" rom-code-ignored ENDOF
        !            83:            ENDCASE
        !            84:            dup 15 + rb@ 80 and IF 2drop EXIT THEN \ End of last image
        !            85:            dup 10 + rw@ wbflip 200 * + \ Next image start
        !            86:            swap 1+ swap \ Next image #
        !            87:        0 UNTIL
        !            88:     THEN false
        !            89: ;
        !            90: 
        !            91: : execute-rom-fcode ( addr len | false -- )
        !            92:        ?dup IF
        !            93:                diagnostic-mode? IF ." , executing ..." cr THEN
        !            94:                dup >r r@ alloc-mem dup >r swap rmove
        !            95:                r@ set-ip evaluate-fcode
        !            96:                diagnostic-mode? IF ." Done." cr THEN
        !            97:                r> r> free-mem
        !            98:        THEN
        !            99: ;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.