home *** CD-ROM | disk | FTP | other *** search
- ;Compiled codeconventions ;
- ;Registers:
- ;
- ;RB 8 Called address ;can be used witho
- ;RL 12 Caller's static
- ;RTS 11 Top of stack (empty word above)
- ;RP 10 Frame pointer
- ;RG 9 Global base
- ;RGB 7 Special global base
- ;
- ;There is an upwards-growing stack, addressed by two r
- ;frame pointer, RTS the top of stack+1 free word point
- ;RG points at the base of the global vector; RGB addre
- ;within the library.
- ;
- ;On procedure entry, RB holds the address of the calle
- ;be preserved. RL holds the address of the caller's s
- ;preserved. R14 holds the link: this must be written
- ;return. R1 to R4 hold the first four arguments, with
- ;above RTS in the usual way. Thus, a general procedure
- ; STMEA rts!, {rb, rp, rl, r14} ; save linkag
- ; SUB rp, rts, #16 ; new frame p
- ; STMEA rts!, {a1, ...} ; arguments
- ; ...
- ; MOV rts, rp ; unwind our
- ; LDMIB rp, {rp, rl, pc}^ ; no need to
- ;
- ;R0 to R6 and RB(8) may be used without saving their v
- ;moreover it is accessible from BCPL through the name
- ;from BCPL has the side-effect of updating R6). R6 an
- ;untouched by the library, and by BCPL code which does
- ;
- ;On return, a1 holds value received.
-
-
- .include "regnames"
- .include "swinames"
- Result2 = 52
- Mb = 202 ;249 used by applications
-
- .AREA Code
- Start: .ascii "BCPL"
- .LONG Globinits-Start
- .ascii "MesHglas"
- .ASCII "23 May 93 00-00-00 "
- .LONG 0
- .long -1
- .ascic "HGlasOn"
- HourglassOn:
- swi Hourglass_On+XOS
- mov pc, lr
- .long -1
- .ascic "HGlasOf"
- HourglassOff:
- swi Hourglass_Off+XOS
- mov pc, lr
- .long -1
- .ascic "HGlasSm"
- HourglassSmash:
- mov r0, a1
- swi Hourglass_Smash+XOS
- mov pc, lr
- .long -1
- .ascic "HGlasSt"
- HourglassStart:
- mov r0, a1
- swi Hourglass_Start+XOS
- mov pc, lr
- .long -1
- .ascic "HGlass%"
- HourglassPercentage:
- mov r0, a1
- swi Hourglass_Percentage+XOS
- mov pc, lr
- .long -1
- .ascic "HGlasLe"
- HourglassLEDs:
- mov r0, a1
- mov a2, a1
- swi Hourglass_LEDs+XOS
- mov pc, lr
- ;Hourglass_Colours : Wb+58; Squash_Compress :
- ;Squash_Decompress : Wb+60;
- .long -1
- .ascic "MtFinfo"
- MessageTransFileInfo:
- ; mov a1, a1, lsl #2
- ; add a1, a1, #1
- swi MessageTrans_Fileinfo+XOS
- str r0, [ rg, #Result2 ]
- mov a1, a2
- mov pc, lr
- .long -1
- .ascic "MtOpenF"
- MessageTransOpenFile:
- mov r0, a1
- ; mov a1, a2, lsl #2
- ; add a1, a1, #1 ; wot if in Rm
- mov a1, a2
- mov a2, a3
- swi MessageTrans_Openfile+XOS
- mov r0, #0
- mvncs r0, #0
- str r0, [ rg, #Result2 ]
- mov pc, lr
- .long -1
- .ascic "MtLookp"
- MessageTransLookup:
- ldr r0, [pc, #Lookswi-$-8]
- LookC: str r0, [pc, #Lswi-$-8]
- mov r0, a1
- mov a1, a2
- mov a2, a3
- str rgb, [pc, #srgb-$-8]
- mov rb, a4, lsl #2
- ldmia rb, {a3-rgb }
- Lswi: swi MessageTrans_Lookup+XOS
- str r3, [ rg, #Result2 ]
- ldr rgb, [pc, #srgb-$-8]
- mov a1, r2
- mov pc, lr
- Lookswi: swi MessageTrans_Lookup+XOS
- GSLookswi:swi MessageTrans_GSLookup+XOS
- srgb: .long 0
- .long -1
- .ascic "MtMenus"
- MessageTransMakeMenus:
- mov r0, a1
- mov a1, a2
- mov a2, a3
- mov a3, a4
- swi MessageTrans_MakeMenus+XOS
- str r3, [ rg, #Result2 ]
- mov a1, a2
- mov pc, lr
- .long -1
- .ascic "MtClose"
- MessageTransCloseFile:
- mov r0, a1
- swi MessageTrans_CloseFile+XOS
- mov pc, lr
- .long -1
- .ascic "MtToken"
- MessageTransEnumerateTokens:
- mov r0, a1
- mov a1, a2
- mov a2, a3
- mov rb, a4, lsl #2
- ldmia rb, {a3-a4 }
- swi MessageTrans_EnumerateTokens+XOS
- mov a1, a2
- mov pc, lr
- .long -1
- .ascic "MtErrLp"
- MessageTransErrorLookup:
- mov r0, a1 ; Error Block
- mov a1, a2 ; file descriptor
- mov a2, a3 ; result buffer
- str rgb, [pc, #srgb-$-8]
- mov rb, a4, lsl #2
- ldmia rb, {a3-rgb }
- swi MessageTrans_ErrorLookup+XOS
- ldr rgb, [pc, #srgb-$-8]
- mov a1, r0
- mov pc, lr
- .long -1
- .ascic "MtGSLkp"
- MessageTransGSLookup:
- ldr r0, [pc, #GSLookswi-$-8]
- b LookC
- .long -1
- .ascic "MtCpErr"
- MessageTransCopyError:
- mov r0, a1
- swi MessageTrans_CopyError+XOS
- mov a1, r0
- mov pc, lr
- Globinits:
- .long Mb+0
- .long HourglassOn - Start
- .long Mb+1
- .long HourglassOff - Start
- .long Mb+2
- .long HourglassSmash - Start
- .long Mb+3
- .long HourglassStart - Start
- .long Mb+4
- .long HourglassPercentage - Start
- .long Mb+5
- .long HourglassLEDs - Start
- .long Mb+9
- .long MessageTransFileInfo - Start
- .long Mb+10
- .long MessageTransOpenFile - Start
- .long Mb+11
- .long MessageTransLookup - Start
- .long Mb+12
- .long MessageTransMakeMenus - Start
- .long Mb+13
- .long MessageTransCloseFile - Start
- .long Mb+14
- .long MessageTransEnumerateTokens - Start
- .long Mb+15
- .long MessageTransErrorLookup - Start
- .long Mb+16
- .long MessageTransGSLookup - Start
- .long Mb+17
- .long MessageTransCopyError - Start
- .long Mb+17
- .long 0
- .LONG 0x12345678
- .LONG Globinits + 4 - Start
- .LONG Globinits + 12 - Start
- .LONG Globinits + 20 - Start
- .LONG Globinits + 28 - Start
- .LONG Globinits + 36 - Start
- .LONG Globinits + 44 - Start
- .LONG Globinits + 52 - Start
- .LONG Globinits + 60 - Start
- .LONG Globinits + 68 - Start
- .LONG Globinits + 76 - Start
- .LONG Globinits + 84 - Start
- .LONG Globinits + 92 - Start
- .LONG Globinits + 100 - Start
- .LONG Globinits + 108 - Start
- .LONG Globinits + 116 - Start
- .LONG 0x87654321
- ; .LONG Globinits + 124 - Start
- ; .LONG Globinits + 132 - Start
- ; .LONG Globinits + 140 - Start
- ; .LONG Globinits + 148 - Start
- ; .LONG Globinits + 156 - Start
- ; .LONG Globinits + 164 - Start
- ; .LONG Globinits + 172 - Start
- ; .LONG Globinits + 180 - Start
- ; .LONG Globinits + 188 - Start
- ; .LONG Globinits + 196 - Start
- ; .LONG Globinits + 204 - Start
- ; .LONG Globinits + 212 - Start
- ; .LONG Globinits + 220 - Start
- ; .LONG Globinits + 228 - Start
- ; .LONG Globinits + 236 - Start
- ; .LONG Globinits + 244 - Start
- ; .LONG Globinits + 252 - Start
- ; .LONG Globinits + 260 - Start
- ; .LONG Globinits + 268 - Start
- ; .LONG Globinits + 276 - Start
- ; .LONG Globinits + 284 - Start
- ; .LONG Globinits + 292 - Start
- ; .LONG Globinits + 300 - Start
- ; .LONG Globinits + 308 - Start
- ; .LONG Globinits + 316 - Start
- ; .LONG Globinits + 324 - Start
- ; .LONG Globinits + 332 - Start
- ; .LONG Globinits + 340 - Start
- ; .LONG Globinits + 348 - Start
- ; .LONG Globinits + 356 - Start
- ; .LONG Globinits + 364 - Start
- ; .LONG Globinits + 372 - Start
- ; .LONG Globinits + 380 - Start
- ; .LONG Globinits + 388 - Start
- ; .LONG Globinits + 396 - Start
- ; .LONG Globinits + 404 - Start
- ; .LONG Globinits + 492 - Start
- ;Hourglass_On : Wb+52; Hourglass_Off :
- ;Hourglass_Smash : WB+54; Hourglass_Start :
- ;Hourglass_Percentage : Wb+56; Hourglass_LEDs :
- ;Hourglass_Colours : Wb+58; Squash_Compress :
- ;Squash_Decompress : Wb+60; MessageTrans_Fileinfo :
- ;MessageTrans_Openfile :Wb+62; MessageTrans_lookup :
- ;MessageTrans_MakeMenus:Wb+64; MessageTrans_CloseFile:
- ;MessageTrans_EnumerateTokens : Wb+66
- ; MessageTrans_ErrorLooku
- ;MessageTrans_GSLookup :Wb+68; MessageTrans_CopyError:
-