ASMB,R,Q,C * NAME: SCHED * SOURCE: 92071-18141 * RELOC: 92071-16141 * PGMR: HLC * * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * **************************************************************** * * NAM SCHED,0 92071-16141 REV.2041 800807 ENT $EX09,$EX10 ENT $EX23,$EX24,$WTSC ENT $WRTS,$$SCH,$.SCH * EXT $RQP8,$XQT,$LIST EXT $STAT,$PRAM,$SCXX EXT $RQ.1,$RQP2,$RQP3,$RQ.3 EXT $RQ.9,$EXEX,$WRKS EXT $WORK,$XEQ,$VBUF EXT $IDNO,$A,$CON,$TIM1 EXT $ALCS,$SBLN,$IDSZ,$IDA EXT $N5.F,$SCHD EXT $NAMX,$TMP1 * A EQU 0 B EQU 1 * * $EX09 EQU * $EX10 EQU * $EX23 EQU * $EX24 EQU * LDB $XQT JSB $VBUF CHECK NAME BUFFER RANGE DEF $RQP2,I DEF D3 JMP SC04 ILLEGAL BUFFER * LDB $XQT JSB $VBUF CHECK STRING BUFFER RANGE DEF $RQP8,I DEF $RQ.9 JMP SC04 ILLEGAL BUFFER * JSB $NAMX FIND PROGRAM NAME DEF $RQP2,I SZB,RSS JMP SC05 NOT FOUND STA $A,I SAVE STATUS SZA JMP QUCHK NOT DORMANT, CANNOT SCHEDULE IT NOW LDA $RQ.9 SZA,RSS JMP NOSTR NO STRING PASSED SSA CMA,INA,RSS CONVERT LENGTH TO POSITIVE CHARS ALS STA $RQ.9 ADDRESS ALREADY IN $RQ.8 JSB $ALCS JMP SC10 NOT ENOUGH MEMORY EVER JMP SUSP NOT ENOUGH MEMORY NOW NOSTR LDB $XQT JSB $PRAM CLEAR CALLER'S PARAMETERS NOP LDB $WORK JSB $PRAM PASS PARAMETERS TO SON DEF $RQ.3 * LDB $WORK JSB $LIST SCHEDULE SON OCT 60 * LDB $WORK ADB =D28 STB IDAD USE DAD'S CONSOLE LU LDA B,I LDB $CON,I RRR 8 ALF,ALF STA IDAD,I FOR LOGLU * LDA $RQ.1 SLA,RSS JMP $EXEX EXEC 10 OR EXEC 24, NO WAIT LDB $XQT JSB $LIST SUSPEND CALLER B3 OCT 3 LDB $WORK STB $XQT,I SET POINTER TO SON IN CALLER'S ID * LDB $XQT JSB $IDNO CONVERT TO ID SEGMENT NUMBER CCB ADB $WRKS IOR B,I ADD 5TH CHAR OF NAME STA B,I JMP $EXEX * * SUSP LDA $SBLN LENGTH OF SAM REQUIRED FOR STRING STA $TMP1,I LDB $XQT JSB $LIST MEMORY SUSPEND CALLER OCT 61 JMP $XEQ * * QUCHK LDA $RQ.1 RRR 4 SLA,RSS JMP $EXEX EXEC 9 OR EXEC 10, NO QUEUE LDA $WORK LDB $XQT JSB $LIST QU SUSPEND CALLER OCT 53 JMP $XEQ * * HED STRING PASSING TO FATHER * $WRTS EQU * WRITE STRING TO FATHER JSB IDAD FIND ID SEGMENT ADDRESS OF FATHER JMP $EXEX NO FATHER STB $A,I INDICATE SUCCESS (B=0) STA B LDA $RQP3 STA $RQP8 BUFFER ADDRESS FOR $ALCS JSB $ALCS ALLOCATE STRING FOR FATHER JMP SC10 NOT ENOUGH MEMORY EVER JMP SUSP NOT ENOUGH MEMORY NOW JMP $EXEX * * D3 DEC 3 * SC04 LDB =D4 JMP $SCXX SC05 LDB =D5 JMP $SCXX SC10 LDB =D10 JMP $SCXX * * IDAD NOP CONVERT FATHER POINTER TO ID ADDRESS LDA $N5.F,I AND =B377 SZA,RSS JMP IDAD,I NO FATHER ISZ IDAD ADA =D-1 MPY $IDSZ (CLEARS B-REG) ADA $IDA JMP IDAD,I * * $WTSC NOP SET PROGRAM DORMANT AND SCHEDULE WAITERS LDA $STAT,I AND =B77 CPA B3 JMP FIXSN WAITING FOR ANOTHER PROGRAM DORM LDB $XQT JSB $LIST MAKE IT DORMANT OCT 0 LDA $XQT JSB $SCHD SCHEDULE QUEUED PROGRAMS OCT 53 JSB IDAD GET ID ADDRESS OF FATHER JMP $WTSC,I NO FATHER * STA IDAD STA B JSB $LIST SCHEDULE FATHER OCT 60 LDA $N5.F,I AND =B177400 CLEAR FATHER POINTER STA $N5.F,I * LDA $STAT,I ALF,ALF SLA,RSS CHECK 'OF' BIT JMP $WTSC,I NORMAL TERMINATION LDB =B100000 ISZ IDAD STB IDAD,I ABORTED, MOVE INDICATOR TO FATHER'S TEMP 1 ISZ IDAD DLD $TIM1,I GET FOUR CHARACTER ABORT MESSAGE ('SC05') DST IDAD,I MOVE TO FATHER'S TEMP 2 & 3 JMP $WTSC,I * * FIXSN LDB $XQT,I MAKE SON AN ORPHAN ADB =D14 LDA B,I AND =B177400 BY CLEARING THE FATHER POINTER STA B,I JMP DORM * $$SCH EQU * STANDARD MODULE $.SCH DEC 0 STANDARD MODULE * END