VolksForth/AtariST/DISASS.FB

1 line
21 KiB
Plaintext
Raw Normal View History

2017-04-23 22:25:49 +00:00
\ 68000 Disassembler loadscreen 05dec86we Onlyforth \needs >absaddr : >absaddr 0 forthstart d+ ; \needs Code .( Load assemble.scr first) abort 1 ?head ! \ alle Disassembler-Worte headerless 1 $12 +thru 0 ?head ! $13 +load \ Benutzer-Worte mit Header \ long words and presigns 14oct86we : l+ ( n -- ) extend d+ ; : l- ( n -- ) extend d- ; : l+! ( n addr -- ) >absaddr ln+! ; : .# Ascii # emit ; : .$ Ascii $ emit ; : ., Ascii , emit ; : .- Ascii - emit ; : .. Ascii . emit ; : .0r ( n width --) over abs swap <# 0 DO # LOOP swap sign #> type space ; \ signed / unsigned byte, word and long output 28jan86ma : .lformat ( laddr --) <# #s #> dup 8 swap - spaces type ; : .lu ( d -- ) <# #s #> type ; : .$lu ( d -- ) .$ .lu ; : .wo ( n -- ) 0 <# # # # # #> type ; : .$wu ( n -- ) .$ .wo ; : .$ws ( n -- ) dup $7FFF u> IF .- 1.0000 rot d- THEN .$ .wo ; : .by ( 8b -- ) 0 <# # # #> type ; : .$bu ( 8b -- ) .$ .by ; : .$bs ( 8b -- ) $FF and dup $7F > IF .- 100 swap - THEN .$ .by ; : .lb ( hi lo len -- ) bounds ?DO I over lc@ .by LOOP ;