ƒNew_Routines    XPRG formatted GEOS file V1.0ż˙˙˙€˙ˆ‹˙ÁŠAŠ˙ńŠ€ŠŽŠ€Šż‘Š€ŠŸŠ€Šż‘Ž€‚ż‘ƒ€€€€˙ń˙˙˙ƒ˙˙Write Image V2.1geoWrite V2.1đŒż?˘É1đʎ AŠ˘9 8%­…ÉĐLh9Š2Z­ż?\, A0 ˇÁ˝8‰ n5­ţ-…­ý-…Š… Š… ś'ŠĐF & % t %ŠĐ7Š €ÂŠĐ/ x9ŠĐ}-G˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙`ČX@ .if (0) ***************************************************  New_Routines  @Author: Jean F. Major  @Start Date: 06 March 1990  @Notice: Copyright (C) 1990, Jean F. Major Enr. page 1 display page 2 MidPutString page 3 i_ MidPutString `ČX@page 4  i_MsInBox `ČX@*************************************************** .endif .if Pass1 .noeqin .noglbl .include geosSym .include geos128Sym .include geosMac .include MyN_Equates .eqin .glbl .endif  @ .ramsect Acopy: .block 1 XCopy: .block 1 YCopy: .block 1 `¨X(0 .if (0)  @***************************************************   @MidPutString  - Will print a string of characters centered at r11 Pass: r0 - pointer to text string r1h - y pos r11 - pointed to the middle of the window you want the text centered Return: Text printed exactly centered at r11 Destroyed: Same as PutString  @***************************************************  .endif .psect  @MidPutString : PushW r2 ; save r2 PushB r1h ; save y position ldy #0 ; reset pointer sty r2l sty r2h  @10$ tya ; save offset pointer pha lda (r0),y ; get character  @ beq 20$ ; is it last character, yes branch  cmp #SPACE ; check for control characters  @ bcs 12$ ; no branch jsr Set_CurMode ; set new mode bra 15$ ; go to next  @12$ ldx currentMode jsr  @GetRealSize tya ; add width to r2 clc adc r2l sta r2l  @ bcc 15$  inc r2h  @15$ pla ; get offset pointer tay iny  @ bra 10$ ; go back @ 20$ pla ; retreive offset ldx #r2 ldy #1 jsr DShiftRight ; divide it by 2 @  jsr CheckMode  @ bpl 30$  ; branch if 40 col @  ldx #r11 ; x position ldy #1 jsr DShiftLeft ; multiply it by 2 @ 30$ SubW r2,r11 ; substract half of lengh PopB r1h ; restore y position jsr PutString ; print it PopW r2 ; restore r2 rts ; return to application  @Set_CurMode:  cmp #PLAINTEXT  @ bne 10$ 05$ jmp PutChar ; set new mode  @10$ cmp #BOLDON  @ beq 05$  cmp #OUTLINEON  @ beq 05$  rts ; `¨X(0 .if (0)  @***************************************************   @i_MidPutString  - Will print a string of characters centered at r11 Pass: .word - pointer to text string .byte - y pos .word - pointed to the middle of the window you want the text centered Return: Text printed exactly centered at r11 Destroyed: Same as PutString  @***************************************************  .endif  @ IMB_BYTES = 5 @ i_MidPutString: PopW returnAddress ldy # @IMB_BYTES MoveB "(returnAddress),y",r11h dey MoveB "(returnAddress),y",r11l dey MoveB "(returnAddress),y",r1h dey MoveB "(returnAddress),y",r0h dey MoveB "(returnAddress),y",r0l jsr  @MidPutString php lda # @IMB_BYTES +1 jmp DoInlineReturn @ `¨X(0 @  .if (0)  @***************************************************   @i_MsInBox  - is an inline for  @IsMseInRegion Pass: .byte - top,bottom .word - left, right Return: same as  @IsMseInRegion `¨X(0 Destroyed: Same as  @IsMseInRegion `¨X(0 @***************************************************  .endif  @IMSB_BYTES = 6 i_MsInBox : P0€°ŕ00000€PopW returnAddress ldy # @01 P0€°ŕ00000X MoveB "(returnAddress),y",r2l iny MoveB "(returnAddress),y",r2h iny MoveB "(returnAddress),y",r3l iny lda (returnAddress),y ora c128Flag sta r3h iny MoveB "(returnAddress),y",r4l iny lda (returnAddress),y ora c128Flag sta r4h jsr IsMseInRegion php lda # @IMSB_BYTES+1 jmp DoInlineReturn  @ `¨X(0.end