> HighRom/src & Demonstrate using high workspace : (7OSWRCH=&FFEE:OSNEWL=&FFE7:OSASCI=&FFE3:OSFILE=&FFDD 2 mcode% &1000 < P=0 1 FP%=&8000:O%=mcode% P[OPT P*3+4 ZBRK:BRK:BRK:JMP Service dEQUB &82:EQUB Copy-&8000 nEQUB &00:EQUS "TESTROM" x .Copy EQUB &00:EQUS "(C)" EQUB &00 : .Service >PHA:LDA &DF0,X :\ Get workspace flags FBMI P%+4: #&40 :\ Toggle bit 6 if bit 7 is zero OASL A:BPL ServDisabled:PLA :\ Exit if the resultant bit 6 is clear : "\ Do the service call dispatch 4CMP #&24:BEQ Serv24 :\ How much high w/s needed 0CMP #&22:BEQ Serv22 :\ Claim high workspace /CMP #&02:BEQ Serv02 :\ Claim low workspace : %CMP #&09:BEQ Serv09 :\ Test code RTS : ".ServDisabled ,JPLA:RTS :\ Restore service call and return 6 @ JA\ ----------------------------------------------------------- TA\ SERVICE &24 - State how much private Hazel workspace needed ^A\ ----------------------------------------------------------- h .Serv24 rKDEY:RTS :\ Need one page of private workspace |: 1\ ------------------------------------------- 1\ SERVICE &22 - Claim Hazel private workspace 1\ -------------------------------------------  .Serv22 SCPY #&DC:BCC P%+4:LDY #&DC :\ If run out of Hazel, point to top of Hazel KTYA:STA &DF0,X :\ Note location of private workspace OINY:LDA #&22:RTS :\ Claim one page of workspace and return : -\ --------------------------------------- -\ SERVICE 2 - Claim private low workspace -\ ---------------------------------------  .Serv02 JLDA OSFILE:CMP #&6C:BCS Serv2bbc :\ Always claim low workspace on BBC >LDA &DF0,X :\ Get workspace pointer OCMP #&DC:BCC Serv2done :\ If we haven't run out of Hazel, use it  .Serv2bbc &KTYA:STA &DF0,X :\ Note location of private workspace 0FINY :\ Use one page of low workspace :.Serv2done D-\ ROMs often do Break initialisation here N9LDA #2:RTS :\ Restore and exit X: b-\ Test code, display something with *HELP l .Serv09 v LDX #0  .Serv09lp  LDA Serv09Text,X:BEQ Serv09b JSR OSASCI:INX:BNE Serv09lp  .Serv09b  LDX &F4:LDA &DF0,X:JSR PrHex #LDA #"0":JSR OSWRCH:JSR OSWRCH JSR OSNEWL LDA #9:RTS .Serv09Text (EQUB 13:EQUS "Workspace at &":EQUB 0  .PrHex -PHA:LSR A:LSR A:LSR A:LSR A:JSR PrNyb:PLA  .PrNyb 4 #15:CMP #10:BCC P%+4:ADC #6:ADC #48:JMP OSWRCH  : '\ Set (ws) to point to my workspace  .FindWS *3LDX &F4:LDA &DF0,X:STA ws+1:LDA #0:STA ws+0:RTS 4] >%"*SAVE HIGHROM ";~mcode%;" ";~O%