INITL.MAC;2/AU=INITL.OLD;1/-BF \ -2,2 .IDENT /13.2AN/ -52 ; NAPC -- REMOVE DEVICE OFFLINE MESSAGE ; REMOVE UNUSED TRAP ROUTINE ; ; DS020 -- AUG 80 MULTITASKER: PREALLOCATE I/O PACKETS ; % -87,87,/;NAPC/ -90,,/;DS020/ ; ; SUBROUTINE TO OUTPUT A MESSAGE TO THE SYSTEM CONSOLE TERMINAL ; OPMSG: MOV (R5)+,R1 ;GET ADDRESS OF OUTPUT MESSAGE 10$: MOVB (R1)+,R0 ;GET NEXT BYTE TO OUTPUT BEQ 30$ ;IF EQ DONE MOVB R0,TPS+2 ;LOAD BYTE IN OUTPUT BUFFER 20$: TSTB TPS ;PRINTER BUSY? BCS 30$ ;IF CS NO CONSOLE TERMINAL BPL 20$ ;IF PL YES BR 10$ ;GO AGAIN 30$: RTS R5 ; -239,254,/;NAPC/ -331,369,/;DS020/ MOV $CRAVL,R0 ;GET ADDRESS OF FREE CORE MOV #$SYBEG-$POOL,R1;SIZE OF INITL AREA TO BE RELEASED SUB R1,R0 ;CALC START OF DEALLOCATION AREA .IF DF Q$$OPT MOVB $PKMAX,R3 ;GET NUMBER OF PACKETS TO PREALLOCATE BLE 220$ ;NONE TO DO CLR R4 ;CLEAR COUNT OF PACKETS DEALLOCATED MOV #$PKAVL,R2 ;SET UP DUMMY LAST PACKET MOV R0,R5 ;ADDRESS OF THIS PACKET 200$: ADD #I.LGTH,R5 ;GET ADDRESS OF NEXT PACKET CMP R5,#200$ ;DON'T OVERLAY THIS CODE BHIS 210$ ;IF HIS, NOT ENOUGH ROOM MOV R0,(R2) ;POINT LAST PACKET TO THIS ONE CLR (R0) ;SET THIS ONE AS LAST MOV R0,$PKTOP ;SET HIGHEST PRE-ALLOCATED I/O PACKET MOV R0,R2 ;SET NEW LAST MOV R5,R0 ;AND NEW CURRENT SUB #I.LGTH,R1 ;REDUCE DEALLOCATION COUNT INC R4 ;COUNT ANOTHER PREALLOCATION SOB R3,200$ ;TRY FOR ANOTHER ONE 210$: MOVB R4,$PKNUM ;RECORD NUMBER OF I/O PACKETS 220$: .ENDC ;Q$$OPT CALLR $DEACB ;DEALLOCATE INITIALIZATION CODE ; ; END OF INITL CODE....FREED TO POOL AFTER EXECUTION ; .IF NE <.-$POOL>&3 .BLKB <.-$POOL>&3 ;ADJUST LENGTH TO DBL WD BOUNDRY .ENDC /