VolksForth/6502/Atari8bit/VForth35/tasker.scr

1 line
10 KiB
Plaintext
Raw Normal View History

2017-04-23 22:25:49 +00:00
\ Tasker Loadscreen \NEEDS CODE abort( Assembler needed ) hex 1 5 +thru \ load Tasker 7 load \ Task-Demo decimal \ MULTITASKER BP 13.9.84 ) CODE STOP SP 2DEC IP LDA SP X) STA IP 1+ LDA SP )Y STA SP 2DEC RP LDA SP X) STA RP 1+ LDA SP )Y STA 6 # LDY SP LDA UP )Y STA INY SP 1+ LDA UP )Y STA 1 # LDY TYA CLC UP ADC W STA TXA UP 1+ ADC W 1+ STA W 1- JMP END-CODE | CREATE TASKPAUSE ASSEMBLER 2C # LDA UP X) STA ' STOP @ JMP END-CODE : SINGLETASK [ ' PAUSE @ ] LITERAL ['] PAUSE ! ; : MULTITASK TASKPAUSE ['] PAUSE ! ; \ PASS ACTIVATE KS 8 MAY 84 ) : PASS ( N0 .. NR-1 TADR R -- ) BEGIN [ ROT ( TRICK ! ) ] SWAP 02C OVER C! \ AWAKE TASK R> -ROT \ IP R ADDR 8 + >R \ S0 OF TASK R@ 2+ @ SWAP \ IP R0 R 2+ 2* \ BYTES ON TASKSTACK \ INCL. R0 & IP R@ @ OVER - \ NEW SP DUP R> 2- ! \ INTO SSAVE SWAP BOUNDS ?DO I ! 2 +LOOP ; RESTRICT