home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / devcon / milan_1991 / devcon91.3 / debug / debugger / s / wack / wack.macros < prev   
Text File  |  1992-09-01  |  2KB  |  91 lines

  1. ;wack.macros V1.5
  2.  
  3. ;byte peek
  4. (macro @b
  5.     (>> (@ (arg 1)) 8)
  6. )
  7.  
  8. ;byte poke
  9. (macro :=b
  10.     (local i)
  11.     (= i (@ (arg 1)))
  12.     (:= (arg 1)
  13.     (or (<< (and (arg 2) ff) 8)
  14.         (and i ff)))
  15. )
  16.  
  17. ;long peek
  18. (macro @l
  19.     (or (<< (@ (arg 1)) #16)
  20.     (@ (+ (arg 1) 2)))
  21. )
  22.  
  23. ;long poke
  24. (macro :=l
  25.     (:= (arg 1) (>> (arg 2) #16))
  26.     (:= (+ (arg 1) 2) (arg 2))
  27. )
  28.  
  29. ;long poke, return previous contents
  30. (macro @=l
  31.     (or
  32.     (<< (@= (arg 1) (>> (arg 2) #16)) #16)
  33.     (@= (+ (arg 1) 2) (arg 2)))
  34. )
  35.  
  36. ;compare two strings
  37. (macro strcmp (local i str1 str2)
  38.     (= str1 (arg 1))
  39.     (= str2 (arg 2))
  40.     (for (= i 0) (and (== (@b str1) (@b str2)) (!= (@b str1) 0))
  41.       ((= str1 (+ str1 1)) (= str2 (+ str2 1))))
  42.     (return (or (@b str1) (@b str2)))
  43. )
  44.  
  45. ;put string at address
  46. (macro puts (local str addr)
  47.     (= str (arg 1 "Enter string? "))
  48.     (= addr (arg 2 "Enter address? "))
  49.     (while (!= (@b str) 0)
  50.     (
  51.     (:=b addr (@b str))
  52.     (= str (+ str 1))
  53.     (= addr (+ addr 1))
  54.     ))
  55. )
  56.  
  57. ;print a signed BYTE
  58. (macro signb
  59.     (if (< (arg 1) 80)
  60.     (print "%4ld " (arg 1))
  61.     ((if (> (arg 1) f6)                             ;if
  62.         (print "  -%ld " (- 100 (arg 1)))           ;    then
  63.         (if (> (arg 1) 9c)                          ;    else if
  64.         (print " -%ld " (- 100 (arg 1)))        ;        then
  65.         (print "-%ld " (- 100 (arg 1)))))))     ;        else
  66. )
  67.  
  68. ;convert BCPL pointer to C pointer
  69. (macro LTOB
  70.     (return (<< (@l (arg 1)) 2))
  71. )
  72.  
  73. ;print BSTR
  74. (macro BSTR (local i cptr)
  75.     (= cptr (LTOB (arg 1)))
  76.     (for (= i 0) (< i (@b cptr)) (= i (+ i 1))
  77.     (print "%lc" (@b (+ (+ 1 cptr) i))))
  78. )
  79.  
  80. ;EXEC Node structure
  81. (macro Node
  82.     (if (!= (nargs) 0)
  83.     (addsymbol ln_Succ (arg 1))
  84.     (addsymbol ln_Succ (current)))
  85.     (addsymbol ln_Pred (+ ln_Succ 4))
  86.     (addsymbol ln_Type (+ ln_Pred 4))
  87.     (addsymbol ln_Pri (+ ln_Type 1))
  88.     (addsymbol ln_Name (+ ln_Pri 1))
  89. )
  90.  
  91.