Annotation of qemu/roms/openbios/forth/device/other.fs, revision 1.1

1.1     ! root        1: \ tag: Other FCode functions
        !             2: \ 
        !             3: \ this code implements IEEE 1275-1994 ch. 5.3.7
        !             4: \ 
        !             5: \ Copyright (C) 2003 Stefan Reinauer
        !             6: \ 
        !             7: \ See the file "COPYING" for further information about
        !             8: \ the copyright and warranty status of this work.
        !             9: \ 
        !            10: 
        !            11: \ The current diagnostic setting
        !            12: defer _diag-switch?
        !            13: 
        !            14: 
        !            15: \ 
        !            16: \ 5.3.7 Other FCode functions
        !            17: \ 
        !            18: 
        !            19: hex
        !            20: 
        !            21: \ 5.3.7.1 Peek/poke 
        !            22: 
        !            23: : cpeek    ( addr -- false | byte true )
        !            24:   c@ true
        !            25:   ;
        !            26: 
        !            27: : wpeek    ( waddr -- false | w true )
        !            28:   w@ true
        !            29:   ;
        !            30: 
        !            31: : lpeek    ( qaddr -- false | quad true )
        !            32:   l@ true
        !            33:   ;
        !            34:   
        !            35: : cpoke    ( byte addr -- okay? )
        !            36:   c! true
        !            37:   ;
        !            38:   
        !            39: : wpoke    ( w waddr -- okay? )
        !            40:   w! true
        !            41:   ;
        !            42:   
        !            43: : lpoke    ( quad qaddr -- okay? )
        !            44:   l! true
        !            45:   ;
        !            46: 
        !            47: 
        !            48: \ 5.3.7.2 Device-register access
        !            49: 
        !            50: : rb@    ( addr -- byte )
        !            51:   ;
        !            52:   
        !            53: : rw@    ( waddr -- w )
        !            54:   ;
        !            55:   
        !            56: : rl@    ( qaddr -- quad )
        !            57:   ;
        !            58:   
        !            59: : rb!    ( byte addr -- )
        !            60:   ;
        !            61:   
        !            62: : rw!    ( w waddr -- )
        !            63:   ;
        !            64:   
        !            65: : rl!    ( quad qaddr -- )
        !            66:   ;
        !            67: 
        !            68: : rx@ ( oaddr - o )
        !            69:   state @ if
        !            70:     h# 22e get-token if , else execute then
        !            71:   else
        !            72:     h# 22e get-token drop execute
        !            73:   then
        !            74:   ; immediate
        !            75: 
        !            76: : rx! ( o oaddr -- )
        !            77:   state @ if
        !            78:     h# 22f get-token if , else execute then
        !            79:   else
        !            80:     h# 22f get-token drop execute
        !            81:   then
        !            82:   ; immediate
        !            83:  
        !            84: \ 5.3.7.3 Time
        !            85: 
        !            86: 0 value dummy-msecs
        !            87: 
        !            88: : get-msecs    ( -- n )
        !            89:   dummy-msecs dup 1+ to dummy-msecs
        !            90:   ;
        !            91:   
        !            92: : ms    ( n -- )
        !            93:   get-msecs +
        !            94:   begin dup get-msecs < until
        !            95:   drop
        !            96:   ;
        !            97:   
        !            98: : alarm    ( xt n -- )
        !            99:   2drop
        !           100:   ;
        !           101:   
        !           102: : user-abort    ( ... -- )  ( R: ... -- )
        !           103:   ;
        !           104: 
        !           105: 
        !           106: \ 5.3.7.4 System information
        !           107: 0003.0000 value fcode-revision    ( -- n )
        !           108:   
        !           109: : mac-address    ( -- mac-str mac-len )
        !           110:   ;
        !           111: 
        !           112: 
        !           113: \ 5.3.7.5 FCode self-test
        !           114: : display-status    ( n -- )
        !           115:   ;
        !           116:   
        !           117: : memory-test-suite ( addr len -- fail? )
        !           118:   ;
        !           119:   
        !           120: : mask    ( -- a-addr )
        !           121:   ;
        !           122:   
        !           123: : diagnostic-mode?     ( -- diag? )
        !           124:   \ Return the NVRAM diag-switch? setting
        !           125:   _diag-switch?
        !           126:   ;
        !           127:   
        !           128: \ 5.3.7.6 Start and end.
        !           129: 
        !           130: \ Begin program with spread 0 followed by FCode-header.
        !           131: : start0 ( -- )
        !           132:   0 fcode-spread !
        !           133:   offset16
        !           134:   fcode-header 
        !           135:   ;
        !           136: 
        !           137: \ Begin program with spread 1 followed by FCode-header.  
        !           138: : start1 ( -- )
        !           139:   1 to fcode-spread
        !           140:   offset16
        !           141:   fcode-header 
        !           142:   ;
        !           143:   
        !           144: \ Begin program with spread 2 followed by FCode-header.
        !           145: : start2 ( -- )
        !           146:   2 to fcode-spread
        !           147:   offset16
        !           148:   fcode-header 
        !           149:   ;
        !           150: 
        !           151: \ Begin program with spread 4 followed by FCode-header.
        !           152: : start4 ( -- )
        !           153:   4 to fcode-spread
        !           154:   offset16
        !           155:   fcode-header 
        !           156:   ;
        !           157:  
        !           158: \ Begin program with spread 1 followed by FCode-header. 
        !           159: : version1 ( -- )
        !           160:   1 to fcode-spread
        !           161:   fcode-header 
        !           162:   ;
        !           163: 
        !           164: \ Cease evaluating this FCode program.
        !           165: : end0 ( -- )
        !           166:   true fcode-end !  
        !           167:   ;
        !           168: 
        !           169: \ Cease evaluating this FCode program.
        !           170: : end1 ( -- )
        !           171:   end0 
        !           172:   ;
        !           173: 
        !           174: \ Standard FCode number for undefined FCode functions.
        !           175: : ferror ( -- )
        !           176:   ." undefined fcode# encountered." cr 
        !           177:   true fcode-end !
        !           178:   ;
        !           179: 
        !           180: \ Pause FCode evaluation if desired; can resume later.
        !           181: : suspend-fcode ( -- )
        !           182:   \ NOT YET IMPLEMENTED.
        !           183:   ;
        !           184: 
        !           185: 
        !           186: \ Evaluate FCode beginning at location addr.
        !           187: 
        !           188: \ : byte-load ( addr xt -- )
        !           189: \   \ this word is implemented in feval.fs
        !           190: \   ;
        !           191: 
        !           192: \ Set address and arguments of new device node.
        !           193: : set-args ( arg-str arg-len unit-str unit-len -- ) 
        !           194:   ?my-self drop
        !           195: 
        !           196:   depth 1- >r
        !           197:   " decode-unit" ['] $call-parent catch if
        !           198:     2drop 2drop
        !           199:   then
        !           200:   
        !           201:   my-self ihandle>phandle >dn.probe-addr \ offset
        !           202:   begin depth r@ > while
        !           203:     dup na1+ >r ! r>
        !           204:   repeat
        !           205:   r> 2drop
        !           206: 
        !           207:   my-self >in.arguments 2@ free-mem
        !           208:   strdup my-self >in.arguments 2!
        !           209: ;
        !           210: 
        !           211: : dma-alloc
        !           212:   s" dma-alloc" $call-parent
        !           213:   ;

unix.superglobalmegacorp.com

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