summaryrefslogtreecommitdiffstats
path: root/qemu/roms/openbios/forth/debugging/firmware.fs
blob: 5e16a6c57995f28d74290c2923fe91192bf5bcc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
\ 7.5 Firmware Debugging command group


\ 7.5.1    Automatic stack display

: (.s
  depth 0 ?do
    depth i - 1- pick .
  loop
  depth 0<> if ascii < emit space then
  ;

: showstack    ( -- )
  ['] (.s to status
  ;
  
: noshowstack    ( -- )
  ['] noop to status
  ;

\ 7.5.2    Serial download

: dl    ( -- )
  ;

  
\ 7.5.3    Dictionary

\ 7.5.3.1    Dictionary search
: .calls    ( xt -- )
  ;
  
: $sift    ( text-addr text-len -- )
  ;
  
: sifting    ( "text< >" -- )
  ;

\ : words    ( -- )
\   \ Implemented in forth bootstrap.
\   ;

  
\ 7.5.3.2    Decompiler

\ implemented in see.fs

\ : see    ( "old-name< >" -- )
\   ;
  
\ : (see)    ( xt -- )
\   ;

  
\ 7.5.3.3    Patch

: patch ( "new-name< >old-name< >word-to-patch< >" -- )
  ;

: (patch)    ( new-n1 num1? old-n2 num2? xt -- )
  ;


\ 7.5.3.4    Forth source-level debugger
 
: debug    ( "old-name< >" -- )
  parse-word            \ Look up word CFA in dictionary
  $find
  0 = if
    ." could not locate word for debugging"
    2drop
  else
    (debug
  then
  ;
  
: stepping    ( -- )
  ;
  
: tracing    ( -- )
  ;
  
: debug-off    ( -- )
  (debug-off)
  ;
  
: resume    ( -- )
  \ Set interpreter termination flag
  1 to terminate?
  ;