Этим Вы окажете большую помощь науке и медицине. См. подробнее: http://solidstate.karelia.ru/~yura/pyldin/yura/computing.htm |
О многозадачности на Пълдине. Простой пример. Исходник от 2-задачного монитора для ненастоящей мультизадачности, но примерно подобно Windows95, основанный на том, что когда программа стоит, она дает системе знать, и система дает работать другой задаче. В этот монитор можно с лёгкостью добавить несколько задач и принудительное переключение по таймеру и получить полноценное ядро. org $100 section 0 rega ds 1 regb ds 1 regx ds 1 regp ds 1 regsp ds 1 regpc ds 1 regs_size = * ends jmp init task1 ldx #text1 int $23 jsr peekMSG bra task1 text1 db 10, 'Task 1',0 task2 ldx #text2 int $23 jsr peekMSG bra task2 text2 db 10, 'Task 2',0 init ldx #rtask1 ldab #/task1 ldaa #task1 lds #stack1 psha pshb sts x, regsp ldx #rtask2 ldab #/task2 ldaa #task2 lds #stack2 psha pshb sts x, regsp ldx #tasklist stx ctask ldx 0, x jmp peekMSG1 peekMSG stx tempx ldx ctask ldx 0, x staa x, rega stab x, regb ldaa tempx staa x, regx ldaa tempx+1 staa x, regx+1 sts x, regsp ldx ctask inx inx stx ctask ldx 0,x bne peekMSG1 ldx #tasklist stx ctask ldx 0,x peekMSG1 lds x, regsp ldaa x, rega ldab x, regb ldx x, regx rts tempx dw 0 ctask dw tasklist tasklist dw rtask1, rtask2, 0 rtask1 ds regs_size rtask2 ds regs_size ds $100 stack1 ds $100 stack2 ds $100