; ; This task serves as a substitute for the $LOAD server so that actual ; calls may be made to PROLOD and use the temporary driver loader built ; into the driver image. ; .mcall rqst$s instal: .word 5 ;install request .word stat ;ptr to status .word reqst ;ptr to rqst .word tnm ;ptr to taskname of driver fnmpt: .word 0 ;ptr to file spec in request packet .word fnmsz ;ptr to word containing size in bytes of fnm stat: .blkw 8. ;status block tnm: .blkw 2 ;taskname of task installed (0 if ins fails) .even ; fnmsz: .word 0 ;word containing size of fnm reqst: .word 1!100 ;request install/noremove of a task reqbf: .blkw 100. ;incoming prolod reqst buffer reqbfs=.-reqbf start: mov #reqbf,r0 ;pt to rqst buf mov #reqbfs/2,r1 ;specify max size in words call $recrq ;receive request or exit cmp (r0)+,#1 ;is this a load request? bne 10$ ;if ne reject mov (r0)+,fnmsz ;get fnm size in bytes mov r0,fnmpt ;save ptr to fnm mov #instal,r5 ;specify arg blk for protsk call call protsk ;install driver /noremove mov #tnm,r3 ;pt to task name (may be invalid..no harm done) rqst$s r3 ;attempt to request it mov #stat+2,r0 ;point to protsk stat blk mov stat,r1 ;get number of valid params br 20$ ;return status 10$: mov #-5,stat ;indicate that we don't unload or do discrete ;reconfiguration commands in the temp loader mov #-1,stat+2 ;feature not implemented yet mov #stat,r0 ;pt to args mov #2,r1 ;return two args 20$: call $sndst ;return status br start ;propagate request .end start