ORG 100H L0000H EQU 0 JP L1000H L1000H HALT HALT ************************************************************************* * * * FILL THE MAP SO EACH TASK IS SET TO THE FIRST 64K OF * * OF MEMORY. * * * ************************************************************************* LD A,000H ;TASK 0, SEGMENT 0 L1004H LD B,000H ;NEW ALLOCATION VECTOR LD C,003H ;NEW ACCESS ATTRIBUTE L1008H CALL L0806H ;NMAP ROUTINE L100BH INC A ;NEXT SEGMENT L100CH INC B ;NEXT ALLOCATION VECTOR BIT 04H,B ;ENTIRE TASK WRITTEN YET? L100FH JP Z,L1008H ;LOOP IF NOT FINISHED CP 000H ;ENTIRE MAP FILLED YET? L1014H JP NZ,L1004H ;LOOP IF NOT FINISHED LD DE,L0019H ;ONE LESS THAN THE SIZE OF A TASK SAVE AREA LD HL,L0015H ;POINTER TO TASK 0 PROGRAM COUNTER SAVE LD B,000H LD A,000H NOP NOP NOP L1024H LD C,001H ;INITIALIZE COUNTER ************************************************************************* * * * LOAD ALL 16 TASK SAVE AREA PROGRAM COUNTERS WITH 0000h * * * ************************************************************************* L1026H LD (HL),B ;LOAD A 0 INTO 15H-TASK 0 PROGRAM COUNTER INC HL L1028H LD (HL),A ;LOAD A 0 INTO 16h-task 0 PROGRAM COUNTER ADD HL,DE ;HL POINTS TO NEXT TASK'S SAVED PROGRAM COUNTER INC C ;INCREMENT COUNTER BIT 04H,C ;ALL 16 TASK SAVE AREAS DONE YET? JP Z,L1026H ;LOOP IF NOT DONE LD A,019H ;MASK REGISTER CONTENTS LD HL,L0021H ;POINT TO TASK 0 MASK REGISTER SAVE LD DE,L001AH ;SIZE OF A TASK SAVE AREA LD C,0FFH ;INITIALIZE COUNTER ************************************************************************* * * * SET ALL OF THE TASK SAVE MASK SAVES TO 19h * * long io mode * * io enabled * * supervisor interrupt enabled * * halts enabled * * run enabled * * task interrupt enabled * * aux disabled * * stop disabled * * * ************************************************************************* L103AH LD (HL),A ;SET A TASKS MASK REGISTER SAVE TO 19h L103BH ADD HL,DE ;POINT TO NEXT TASKS MASK REGISTER SAVE INC C ;INCREMENT COUNTER BIT 04H,C ;ALL DONE YET? JP Z,L103AH ;LOOP IF NOT DONE LD A,001H LD (L0006H),A ;SET THE CURRENT TASK TO TASK 1 JP L0815H ;RESTORE TASK 0 MAP TO NORMAL CONDITION, ;THEN GO TO 0000 IN CURRENT TASK (TASK 1) END