home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / apps / languages / progs / bcplib / ZHour < prev   
Encoding:
Text File  |  1993-07-16  |  9.6 KB  |  275 lines

  1.  ;Compiled codeconventions ;
  2.  ;Registers:
  3.  ;
  4.  ;RB         8    Called address     ;can be used witho
  5.  ;RL         12   Caller's static
  6.  ;RTS        11   Top of stack (empty word above)
  7.  ;RP         10   Frame pointer
  8.  ;RG         9    Global base
  9.  ;RGB        7    Special global base
  10.  ;
  11.  ;There is an upwards-growing stack, addressed by two r
  12.  ;frame pointer, RTS the top of stack+1 free word point
  13.  ;RG points at the base of the global vector; RGB addre
  14.  ;within the library.
  15.  ;
  16.  ;On procedure entry, RB holds the address of the calle
  17.  ;be preserved.  RL holds the address of the caller's s
  18.  ;preserved.  R14 holds the link: this must be written
  19.  ;return.  R1 to R4 hold the first four arguments, with
  20.  ;above RTS in the usual way. Thus, a general procedure
  21.  ;        STMEA   rts!, {rb, rp, rl, r14} ; save linkag
  22.  ;        SUB     rp, rts, #16            ; new frame p
  23.  ;        STMEA   rts!, {a1, ...}         ; arguments
  24.  ;           ...
  25.  ;        MOV     rts, rp                 ; unwind our
  26.  ;        LDMIB   rp, {rp, rl, pc}^       ; no need to
  27.  ;
  28.  ;R0 to R6 and RB(8) may be used without saving their v
  29.  ;moreover it is accessible from BCPL through the name
  30.  ;from BCPL has the side-effect of updating R6).  R6 an
  31.  ;untouched by the library, and by BCPL code which does
  32.  ;
  33.  ;On return, a1 holds value received.
  34.  
  35.  
  36.          .include  "regnames"
  37.          .include  "swinames"
  38.          Result2 = 52
  39.          Mb      = 202                  ;249 used by applications
  40.  
  41.          .AREA     Code
  42. Start:   .ascii     "BCPL"
  43.          .LONG     Globinits-Start
  44.          .ascii    "MesHglas"
  45.          .ASCII    "23 May 93 00-00-00  "
  46.          .LONG     0
  47.          .long     -1
  48.          .ascic    "HGlasOn"
  49. HourglassOn:
  50.           swi       Hourglass_On+XOS
  51.           mov       pc, lr
  52.           .long     -1
  53.           .ascic    "HGlasOf"
  54. HourglassOff:
  55.           swi       Hourglass_Off+XOS
  56.           mov       pc, lr
  57.           .long     -1
  58.           .ascic    "HGlasSm"
  59. HourglassSmash:
  60.           mov       r0, a1
  61.           swi       Hourglass_Smash+XOS
  62.           mov       pc, lr
  63.           .long     -1
  64.           .ascic    "HGlasSt"
  65. HourglassStart:
  66.           mov       r0, a1
  67.           swi       Hourglass_Start+XOS
  68.           mov       pc, lr
  69.           .long     -1
  70.           .ascic    "HGlass%"
  71. HourglassPercentage:
  72.           mov       r0, a1
  73.           swi       Hourglass_Percentage+XOS
  74.           mov       pc, lr
  75.           .long     -1
  76.           .ascic    "HGlasLe"
  77. HourglassLEDs:
  78.           mov       r0, a1
  79.           mov       a2, a1
  80.           swi       Hourglass_LEDs+XOS
  81.           mov       pc, lr
  82. ;Hourglass_Colours :    Wb+58; Squash_Compress :
  83. ;Squash_Decompress :    Wb+60;
  84.           .long     -1
  85.           .ascic     "MtFinfo"
  86. MessageTransFileInfo:
  87. ;          mov       a1, a1, lsl #2
  88. ;          add       a1, a1, #1
  89.           swi       MessageTrans_Fileinfo+XOS
  90.           str       r0, [ rg, #Result2 ]
  91.           mov       a1, a2
  92.           mov       pc, lr
  93.           .long     -1
  94.           .ascic     "MtOpenF"
  95. MessageTransOpenFile:
  96.           mov       r0, a1
  97. ;          mov       a1, a2, lsl #2
  98. ;          add       a1, a1, #1          ; wot if in Rm
  99.           mov       a1, a2
  100.           mov       a2, a3
  101.           swi       MessageTrans_Openfile+XOS
  102.           mov       r0, #0
  103.           mvncs     r0, #0
  104.           str       r0, [ rg, #Result2 ]
  105.           mov       pc, lr
  106.           .long     -1
  107.           .ascic     "MtLookp"
  108. MessageTransLookup:
  109.           ldr       r0, [pc, #Lookswi-$-8]
  110. LookC:    str       r0, [pc, #Lswi-$-8]
  111.           mov       r0, a1
  112.           mov       a1, a2
  113.           mov       a2, a3
  114.           str       rgb, [pc, #srgb-$-8]
  115.           mov       rb, a4, lsl #2
  116.           ldmia     rb, {a3-rgb }
  117. Lswi:     swi       MessageTrans_Lookup+XOS
  118.           str       r3, [ rg, #Result2 ]
  119.           ldr       rgb, [pc, #srgb-$-8]
  120.           mov       a1, r2
  121.           mov       pc, lr
  122. Lookswi:  swi       MessageTrans_Lookup+XOS
  123. GSLookswi:swi       MessageTrans_GSLookup+XOS
  124. srgb:     .long     0
  125.          .long     -1
  126.           .ascic     "MtMenus"
  127. MessageTransMakeMenus:
  128.           mov       r0, a1
  129.           mov       a1, a2
  130.           mov       a2, a3
  131.           mov       a3, a4
  132.           swi       MessageTrans_MakeMenus+XOS
  133.           str       r3, [ rg, #Result2 ]
  134.           mov       a1, a2
  135.           mov       pc, lr
  136.           .long     -1
  137.           .ascic     "MtClose"
  138. MessageTransCloseFile:
  139.           mov       r0, a1
  140.           swi       MessageTrans_CloseFile+XOS
  141.           mov       pc, lr
  142.           .long     -1
  143.           .ascic     "MtToken"
  144. MessageTransEnumerateTokens:
  145.           mov       r0, a1
  146.           mov       a1, a2
  147.           mov       a2, a3
  148.           mov       rb, a4, lsl #2
  149.           ldmia     rb, {a3-a4 }
  150.           swi       MessageTrans_EnumerateTokens+XOS
  151.           mov       a1, a2
  152.           mov       pc, lr
  153.           .long     -1
  154.           .ascic     "MtErrLp"
  155. MessageTransErrorLookup:
  156.           mov       r0, a1        ; Error Block
  157.           mov       a1, a2        ; file descriptor
  158.           mov       a2, a3        ; result buffer
  159.           str       rgb, [pc, #srgb-$-8]
  160.           mov       rb, a4, lsl #2
  161.           ldmia     rb, {a3-rgb }
  162.           swi       MessageTrans_ErrorLookup+XOS
  163.           ldr       rgb, [pc, #srgb-$-8]
  164.           mov       a1, r0
  165.           mov       pc, lr
  166.           .long     -1
  167.           .ascic     "MtGSLkp"
  168. MessageTransGSLookup:
  169.           ldr       r0, [pc, #GSLookswi-$-8]
  170.           b         LookC
  171.           .long     -1
  172.           .ascic     "MtCpErr"
  173. MessageTransCopyError:
  174.           mov       r0, a1
  175.           swi       MessageTrans_CopyError+XOS
  176.           mov       a1, r0
  177.           mov       pc, lr
  178. Globinits:
  179.           .long     Mb+0
  180.           .long     HourglassOn - Start
  181.           .long     Mb+1
  182.           .long     HourglassOff - Start
  183.           .long     Mb+2
  184.           .long     HourglassSmash - Start
  185.           .long     Mb+3
  186.           .long     HourglassStart - Start
  187.           .long     Mb+4
  188.           .long     HourglassPercentage - Start
  189.           .long     Mb+5
  190.           .long     HourglassLEDs - Start
  191.           .long     Mb+9
  192.           .long     MessageTransFileInfo - Start
  193.           .long     Mb+10
  194.           .long     MessageTransOpenFile - Start
  195.           .long     Mb+11
  196.           .long     MessageTransLookup - Start
  197.           .long     Mb+12
  198.           .long     MessageTransMakeMenus - Start
  199.           .long     Mb+13
  200.           .long     MessageTransCloseFile - Start
  201.           .long     Mb+14
  202.           .long     MessageTransEnumerateTokens - Start
  203.           .long     Mb+15
  204.           .long     MessageTransErrorLookup - Start
  205.           .long     Mb+16
  206.           .long     MessageTransGSLookup - Start
  207.           .long     Mb+17
  208.           .long     MessageTransCopyError - Start
  209.           .long     Mb+17
  210.           .long     0
  211.           .LONG  0x12345678
  212.           .LONG  Globinits + 4 - Start
  213.           .LONG  Globinits + 12 - Start
  214.           .LONG  Globinits + 20 - Start
  215.           .LONG  Globinits + 28 - Start
  216.           .LONG  Globinits + 36 - Start
  217.           .LONG  Globinits + 44 - Start
  218.           .LONG  Globinits + 52 - Start
  219.           .LONG  Globinits + 60 - Start
  220.           .LONG  Globinits + 68 - Start
  221.           .LONG  Globinits + 76 - Start
  222.           .LONG  Globinits + 84 - Start
  223.           .LONG  Globinits + 92 - Start
  224.           .LONG  Globinits + 100 - Start
  225.           .LONG  Globinits + 108 - Start
  226.           .LONG  Globinits + 116 - Start
  227.           .LONG  0x87654321
  228. ;         .LONG  Globinits + 124 - Start
  229. ;         .LONG  Globinits + 132 - Start
  230. ;         .LONG  Globinits + 140 - Start
  231. ;         .LONG  Globinits + 148 - Start
  232. ;         .LONG  Globinits + 156 - Start
  233. ;         .LONG  Globinits + 164 - Start
  234. ;         .LONG  Globinits + 172 - Start
  235. ;         .LONG  Globinits + 180 - Start
  236. ;         .LONG  Globinits + 188 - Start
  237. ;         .LONG  Globinits + 196 - Start
  238. ;         .LONG  Globinits + 204 - Start
  239. ;         .LONG  Globinits + 212 - Start
  240. ;         .LONG  Globinits + 220 - Start
  241. ;         .LONG  Globinits + 228 - Start
  242. ;         .LONG  Globinits + 236 - Start
  243. ;         .LONG  Globinits + 244 - Start
  244. ;         .LONG  Globinits + 252 - Start
  245. ;         .LONG  Globinits + 260 - Start
  246. ;         .LONG  Globinits + 268 - Start
  247. ;         .LONG  Globinits + 276 - Start
  248. ;         .LONG  Globinits + 284 - Start
  249. ;         .LONG  Globinits + 292 - Start
  250. ;         .LONG  Globinits + 300 - Start
  251. ;         .LONG  Globinits + 308 - Start
  252. ;         .LONG  Globinits + 316 - Start
  253. ;         .LONG  Globinits + 324 - Start
  254. ;         .LONG  Globinits + 332 - Start
  255. ;         .LONG  Globinits + 340 - Start
  256. ;         .LONG  Globinits + 348 - Start
  257. ;         .LONG  Globinits + 356 - Start
  258. ;         .LONG  Globinits + 364 - Start
  259. ;         .LONG  Globinits + 372 - Start
  260. ;         .LONG  Globinits + 380 - Start
  261. ;         .LONG  Globinits + 388 - Start
  262. ;         .LONG  Globinits + 396 - Start
  263. ;         .LONG  Globinits + 404 - Start
  264. ;         .LONG  Globinits + 492 - Start
  265. ;Hourglass_On :         Wb+52; Hourglass_Off :
  266. ;Hourglass_Smash :      WB+54; Hourglass_Start :
  267. ;Hourglass_Percentage : Wb+56; Hourglass_LEDs :
  268. ;Hourglass_Colours :    Wb+58; Squash_Compress :
  269. ;Squash_Decompress :    Wb+60; MessageTrans_Fileinfo :
  270. ;MessageTrans_Openfile :Wb+62; MessageTrans_lookup :
  271. ;MessageTrans_MakeMenus:Wb+64; MessageTrans_CloseFile:
  272. ;MessageTrans_EnumerateTokens : Wb+66
  273. ;                              MessageTrans_ErrorLooku
  274. ;MessageTrans_GSLookup :Wb+68; MessageTrans_CopyError:
  275.