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

1.1     ! root        1: \ tag: FCode table setup
        !             2: \ 
        !             3: \ this code implements an fcode evaluator 
        !             4: \ as described in IEEE 1275-1994
        !             5: \ 
        !             6: \ Copyright (C) 2003 Stefan Reinauer
        !             7: \ 
        !             8: \ See the file "COPYING" for further information about
        !             9: \ the copyright and warranty status of this work.
        !            10: \ 
        !            11: 
        !            12: hex
        !            13: 
        !            14: : undefined-fcode ." undefined fcode word." cr ;
        !            15: : reserved-fcode  ." reserved fcode word."  cr ;
        !            16: 
        !            17: : ['], ( <word> -- )
        !            18:   ' ,
        !            19: ;
        !            20: 
        !            21: : n['], ( n <word> -- )
        !            22:   ' swap 0 do
        !            23:     dup ,
        !            24:   loop
        !            25:   drop
        !            26: ;
        !            27: 
        !            28: \ the table used 
        !            29: create fcode-master-table
        !            30:   ['], end0
        !            31:   f n['], reserved-fcode
        !            32:   ['], b(lit)
        !            33:   ['], b(')
        !            34:   ['], b(")
        !            35:   ['], bbranch
        !            36:   ['], b?branch
        !            37:   ['], b(loop)
        !            38:   ['], b(+loop)
        !            39:   ['], b(do)
        !            40:   ['], b(?do)
        !            41:   ['], i
        !            42:   ['], j
        !            43:   ['], b(leave)
        !            44:   ['], b(of)
        !            45:   ['], execute
        !            46:   ['], +
        !            47:   ['], -
        !            48:   ['], *
        !            49:   ['], /
        !            50:   ['], mod
        !            51:   ['], and
        !            52:   ['], or
        !            53:   ['], xor
        !            54:   ['], invert
        !            55:   ['], lshift
        !            56:   ['], rshift
        !            57:   ['], >>a
        !            58:   ['], /mod
        !            59:   ['], u/mod
        !            60:   ['], negate
        !            61:   ['], abs
        !            62:   ['], min
        !            63:   ['], max
        !            64:   ['], >r
        !            65:   ['], r>
        !            66:   ['], r@
        !            67:   ['], exit
        !            68:   ['], 0=
        !            69:   ['], 0<>
        !            70:   ['], 0<
        !            71:   ['], 0<=
        !            72:   ['], 0>
        !            73:   ['], 0>=
        !            74:   ['], <
        !            75:   ['], >
        !            76:   ['], =
        !            77:   ['], <>
        !            78:   ['], u>
        !            79:   ['], u<=
        !            80:   ['], u<
        !            81:   ['], u>=
        !            82:   ['], >=
        !            83:   ['], <=
        !            84:   ['], between
        !            85:   ['], within
        !            86:   ['], drop
        !            87:   ['], dup
        !            88:   ['], over
        !            89:   ['], swap
        !            90:   ['], rot
        !            91:   ['], -rot
        !            92:   ['], tuck
        !            93:   ['], nip
        !            94:   ['], pick
        !            95:   ['], roll
        !            96:   ['], ?dup
        !            97:   ['], depth
        !            98:   ['], 2drop
        !            99:   ['], 2dup
        !           100:   ['], 2over
        !           101:   ['], 2swap
        !           102:   ['], 2rot
        !           103:   ['], 2/
        !           104:   ['], u2/
        !           105:   ['], 2*
        !           106:   ['], /c
        !           107:   ['], /w
        !           108:   ['], /l
        !           109:   ['], /n
        !           110:   ['], ca+
        !           111:   ['], wa+
        !           112:   ['], la+
        !           113:   ['], na+
        !           114:   ['], char+
        !           115:   ['], wa1+
        !           116:   ['], la1+
        !           117:   ['], cell+
        !           118:   ['], chars
        !           119:   ['], /w*
        !           120:   ['], /l*
        !           121:   ['], cells
        !           122:   ['], on
        !           123:   ['], off
        !           124:   ['], +!
        !           125:   ['], @
        !           126:   ['], l@
        !           127:   ['], w@
        !           128:   ['], <w@
        !           129:   ['], c@
        !           130:   ['], !
        !           131:   ['], l!
        !           132:   ['], w!
        !           133:   ['], c!
        !           134:   ['], 2@
        !           135:   ['], 2!
        !           136:   ['], move
        !           137:   ['], fill
        !           138:   ['], comp
        !           139:   ['], noop
        !           140:   ['], lwsplit
        !           141:   ['], wljoin
        !           142:   ['], lbsplit
        !           143:   ['], bljoin
        !           144:   ['], wbflip
        !           145:   ['], upc
        !           146:   ['], lcc
        !           147:   ['], pack
        !           148:   ['], count
        !           149:   ['], body>
        !           150:   ['], >body
        !           151:   ['], fcode-revision
        !           152:   ['], span
        !           153:   ['], unloop
        !           154:   ['], expect
        !           155:   ['], alloc-mem
        !           156:   ['], free-mem
        !           157:   ['], key?
        !           158:   ['], key
        !           159:   ['], emit
        !           160:   ['], type
        !           161:   ['], (cr
        !           162:   ['], cr
        !           163:   ['], #out
        !           164:   ['], #line
        !           165:   ['], hold
        !           166:   ['], <#
        !           167:   ['], u#>
        !           168:   ['], sign
        !           169:   ['], u#
        !           170:   ['], u#s
        !           171:   ['], u.
        !           172:   ['], u.r
        !           173:   ['], .
        !           174:   ['], .r
        !           175:   ['], .s
        !           176:   ['], base
        !           177:   ['], convert                  \ reserved (compatibility)
        !           178:   ['], $number
        !           179:   ['], digit
        !           180:   ['], -1
        !           181:   ['], 0
        !           182:   ['], 1
        !           183:   ['], 2
        !           184:   ['], 3
        !           185:   ['], bl
        !           186:   ['], bs
        !           187:   ['], bell
        !           188:   ['], bounds
        !           189:   ['], here
        !           190:   ['], aligned
        !           191:   ['], wbsplit
        !           192:   ['], bwjoin
        !           193:   ['], b(<mark)
        !           194:   ['], b(>resolve)
        !           195:   ['], set-token-table
        !           196:   ['], set-table
        !           197:   ['], new-token
        !           198:   ['], named-token
        !           199:   ['], b(:)
        !           200:   ['], b(value)
        !           201:   ['], b(variable)
        !           202:   ['], b(constant)
        !           203:   ['], b(create)
        !           204:   ['], b(defer)
        !           205:   ['], b(buffer:)
        !           206:   ['], b(field)
        !           207:   ['], b(code)
        !           208:   ['], instance
        !           209:   ['], reserved-fcode
        !           210:   ['], b(;)
        !           211:   ['], b(to)
        !           212:   ['], b(case)
        !           213:   ['], b(endcase)
        !           214:   ['], b(endof)
        !           215:   ['], #
        !           216:   ['], #s
        !           217:   ['], #>
        !           218:   ['], external-token
        !           219:   ['], $find
        !           220:   ['], offset16
        !           221:   ['], evaluate
        !           222:   ['], reserved-fcode
        !           223:   ['], reserved-fcode
        !           224:   ['], c,
        !           225:   ['], w,
        !           226:   ['], l,
        !           227:   ['], ,
        !           228:   ['], um*
        !           229:   ['], um/mod
        !           230:   ['], reserved-fcode
        !           231:   ['], reserved-fcode
        !           232:   ['], d+
        !           233:   ['], d-
        !           234:   ['], get-token
        !           235:   ['], set-token
        !           236:   ['], state
        !           237:   ['], compile,
        !           238:   ['], behavior
        !           239:   11 n['], reserved-fcode
        !           240:   ['], start0
        !           241:   ['], start1
        !           242:   ['], start2
        !           243:   ['], start4
        !           244:   8 n['], reserved-fcode
        !           245:   ['], ferror
        !           246:   ['], version1
        !           247:   ['], 4-byte-id
        !           248:   ['], end1
        !           249:   ['], reserved-fcode
        !           250:   ['], dma-alloc
        !           251:   ['], my-address
        !           252:   ['], my-space
        !           253:   ['], memmap
        !           254:   ['], free-virtual
        !           255:   ['], >physical
        !           256:   8 n['], reserved-fcode
        !           257:   ['], my-params
        !           258:   ['], property
        !           259:   ['], encode-int
        !           260:   ['], encode+
        !           261:   ['], encode-phys
        !           262:   ['], encode-string
        !           263:   ['], encode-bytes
        !           264:   ['], reg
        !           265:   ['], intr
        !           266:   ['], driver
        !           267:   ['], model
        !           268:   ['], device-type
        !           269:   ['], parse-2int
        !           270:   ['], is-install
        !           271:   ['], is-remove
        !           272:   ['], is-selftest
        !           273:   ['], new-device
        !           274:   ['], diagnostic-mode?
        !           275:   ['], display-status
        !           276:   ['], memory-test-suite
        !           277:   ['], group-code
        !           278:   ['], mask
        !           279:   ['], get-msecs
        !           280:   ['], ms
        !           281:   ['], finish-device
        !           282:   ['], decode-phys           \ 128
        !           283:   ['], push-package
        !           284:   ['], pop-package
        !           285:   ['], interpose             \ extension (recommended practice)
        !           286:   4 n['], reserved-fcode
        !           287:   ['], map-low
        !           288:   ['], sbus-intr>cpu
        !           289:   1e n['], reserved-fcode
        !           290:   ['], #lines
        !           291:   ['], #columns
        !           292:   ['], line#
        !           293:   ['], column#
        !           294:   ['], inverse?
        !           295:   ['], inverse-screen?
        !           296:   ['], frame-buffer-busy?
        !           297:   ['], draw-character
        !           298:   ['], reset-screen
        !           299:   ['], toggle-cursor
        !           300:   ['], erase-screen
        !           301:   ['], blink-screen
        !           302:   ['], invert-screen
        !           303:   ['], insert-characters
        !           304:   ['], delete-characters
        !           305:   ['], insert-lines
        !           306:   ['], delete-lines
        !           307:   ['], draw-logo
        !           308:   ['], frame-buffer-adr
        !           309:   ['], screen-height
        !           310:   ['], screen-width
        !           311:   ['], window-top
        !           312:   ['], window-left
        !           313:   3 n['], reserved-fcode
        !           314:   ['], default-font
        !           315:   ['], set-font
        !           316:   ['], char-height
        !           317:   ['], char-width
        !           318:   ['], >font
        !           319:   ['], fontbytes
        !           320:   10 n['], reserved-fcode             \ fb1 words
        !           321:   ['], fb8-draw-character
        !           322:   ['], fb8-reset-screen
        !           323:   ['], fb8-toggle-cursor
        !           324:   ['], fb8-erase-screen
        !           325:   ['], fb8-blink-screen
        !           326:   ['], fb8-invert-screen
        !           327:   ['], fb8-insert-characters
        !           328:   ['], fb8-delete-characters
        !           329:   ['], fb8-insert-lines
        !           330:   ['], fb8-delete-lines
        !           331:   ['], fb8-draw-logo
        !           332:   ['], fb8-install
        !           333:   4 n['], reserved-fcode           \ reserved
        !           334:   7 n['], reserved-fcode           \ VME-bus support
        !           335:   9 n['], reserved-fcode           \ reserved
        !           336:   ['], return-buffer
        !           337:   ['], xmit-packet
        !           338:   ['], poll-packet
        !           339:   ['], reserved-fcode
        !           340:   ['], mac-address
        !           341:   5c n['], reserved-fcode          \ 1a5-200 reserved
        !           342:   ['], device-name
        !           343:   ['], my-args
        !           344:   ['], my-self
        !           345:   ['], find-package
        !           346:   ['], open-package
        !           347:   ['], close-package
        !           348:   ['], find-method
        !           349:   ['], call-package
        !           350:   ['], $call-parent
        !           351:   ['], my-parent
        !           352:   ['], ihandle>phandle
        !           353:   ['], reserved-fcode
        !           354:   ['], my-unit
        !           355:   ['], $call-method
        !           356:   ['], $open-package
        !           357:   ['], processor-type
        !           358:   ['], firmware-version
        !           359:   ['], fcode-version
        !           360:   ['], alarm
        !           361:   ['], (is-user-word)
        !           362:   ['], suspend-fcode
        !           363:   ['], abort
        !           364:   ['], catch
        !           365:   ['], throw
        !           366:   ['], user-abort
        !           367:   ['], get-my-property
        !           368:   ['], decode-int
        !           369:   ['], decode-string
        !           370:   ['], get-inherited-property
        !           371:   ['], delete-property
        !           372:   ['], get-package-property
        !           373:   ['], cpeek
        !           374:   ['], wpeek
        !           375:   ['], lpeek
        !           376:   ['], cpoke
        !           377:   ['], wpoke
        !           378:   ['], lpoke
        !           379:   ['], lwflip
        !           380:   ['], lbflip
        !           381:   ['], lbflips
        !           382:   ['], adr-mask
        !           383:   4 n['], reserved-fcode       \ 22a-22d
        !           384: 64bit? [IF]
        !           385:   ['], (rx@)
        !           386:   ['], (rx!)
        !           387: [ELSE]
        !           388:    2 n['], reserved-fcode       \ 22e-22f 
        !           389: [THEN]
        !           390:   ['], rb@
        !           391:   ['], rb!
        !           392:   ['], rw@
        !           393:   ['], rw!
        !           394:   ['], rl@
        !           395:   ['], rl!
        !           396:   ['], wbflips
        !           397:   ['], lwflips
        !           398:   ['], probe
        !           399:   ['], probe-virtual
        !           400:   ['], reserved-fcode
        !           401:   ['], child
        !           402:   ['], peer
        !           403:   ['], next-property
        !           404:   ['], byte-load
        !           405:   ['], set-args
        !           406:   ['], left-parse-string        \ 240
        !           407: 64bit? [IF]
        !           408:   ['], bxjoin
        !           409:   ['], <l@
        !           410:   ['], lxjoin
        !           411:   ['], wxjoin
        !           412:   ['], x,
        !           413:   ['], x@
        !           414:   ['], x!
        !           415:   ['], /x
        !           416:   ['], /x*
        !           417: \   ['], /xa+
        !           418: \   ['], /xa1+
        !           419:   ['], xbflip
        !           420:   ['], xbflips
        !           421:   ['], xbsplit
        !           422:   ['], xlflip
        !           423:   ['], xlflips
        !           424:   ['], xlsplit
        !           425:   ['], xwflip
        !           426:   ['], xwflips
        !           427:   ['], xwsplit
        !           428: [ELSE]
        !           429:   7 n['], reserved-fcode       \ 241-247 (Part of IEEE1275 64-bit draft standard)
        !           430:   ['], /x
        !           431:   c n['], reserved-fcode       \ 249-254 (Part of IEEE1275 64-bit draft standard)
        !           432: [THEN]
        !           433: 
        !           434: 
        !           435: here fcode-master-table - constant fcode-master-table-size
        !           436: 
        !           437: 
        !           438: : nreserved ( fcode-table-ptr first last xt -- )
        !           439:   -rot 1+ swap do
        !           440:     2dup swap i cells + !
        !           441:   loop
        !           442:   2drop 
        !           443: ;
        !           444: 
        !           445: :noname
        !           446:   800 cells alloc-mem to fcode-sys-table
        !           447: 
        !           448:   fcode-sys-table
        !           449:   dup 0 5ff ['] reserved-fcode nreserved        \ built-in fcodes
        !           450:   dup 600 7ff ['] undefined-fcode nreserved     \ vendor fcodes
        !           451:   
        !           452:   \ copy built-in fcodes
        !           453:   fcode-master-table swap fcode-master-table-size move
        !           454: ; initializer
        !           455: 
        !           456: : (init-fcode-table) ( -- )
        !           457:   fcode-sys-table fcode-table 800 cells move
        !           458:   \ clear local fcodes
        !           459:   fcode-table 800 fff ['] undefined-fcode nreserved
        !           460: ;
        !           461: 
        !           462: ['] (init-fcode-table) to init-fcode-table

unix.superglobalmegacorp.com

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