1 REM Ins{nd av Kristoffer Eriksson SYSOP <5357> 1986-09-30 02.18.42 (DUMP) ; Fil: INPUTDOG.ASM ; Av: Kristoffer Eriksson, "SKE" <5357>, 1986. ; ;-Ver--/-Datum----/-Sign-/-Kommentar---------------------------------- ; 1.00 / 86-09-29 / SKE / INPUTDOG ; ; Programmet l{nkar in en liten rutin som }stadkommer reset av datorn om ; ingen inmatning g|rs i Consi inom en viss tid fr}n anropet till Consi. ; ; Det st}r helt klart att det h{r skulle kunna g|ras p} m}nga andra s{tt. ; T ex kunde man r{kna med {ven den tid som inte tillbringas i v{ntan p} ; inmatning, eftersom det nu inte har n}gon effekt BASIC-program som ligger ; och v{ntar p} inmatning med SYS(5). Man kunde ocks} avbryta p} n}got ; smidigare s{tt {n reset som inte st{nger filer efter sig, t ex genom att ; stoppa programmet och l{gga ut "tv}ngskommandon", eller CHAIN. Reset: = 0 Consi: = 65424 ClockVec: = 65494 Spt.Tic: = 65525 DefTimeOut: = 5 * 60 PtrSav.Bt: DEFW 0 ; Lagring av Y.Botm f|r ev url{nkning. PtrSav.Co: DEFW 0 ; Den nya Consi-rutinen l{nkar in en timeout-rutin i avbrottsrutinen f|r ; realtidsklockan. Anledningen till att inte ha den inl{nkad j{mt {r att ; inte sl|a ned |vrig programexekvering, och slippa ha en flagga som m}ste ; testas ideligen. Consi.Ny: PUSH HL LD HL,(ClockVec) LD (ClockL{nk+1),HL PUSH HL LD HL,ClockInt LD (ClockVec),HL $$TimeOut: LD HL,DefTimeOut + 256 ; Ers{tts med aktuell timeout-tid. LD (TimeCount),HL $$Consi: CALL 0 ; Vidare till gammal Consi. POP HL LD (ClockVec),HL POP HL RET ; Nedr{kningsrutin i klock-avbrottet. Pga det s{tt sj{lva nedr{kningen {r ; utformad r{knas H-byten ned ett tick f|r tidigt (n{r L g}r fr}n 1 till 0 ; i st{llet f|r fr}n 0 till 255), och hela v{rdet visar 256 f|r lite n{r ; det j{mf|rs med noll. D{rf|r m}ste det adderas med 256 innan det st{lls in ; fr}n b|rjan. ClockInt: PUSH AF LD A,(Spt.Tic) AND A JR NZ,ClockCont PUSH HL LD HL,TimeCount DEC (HL) JR NZ,ClockCont2 INC HL DEC (HL) JP Z,Reset ClockCont2: POP HL ClockCont: POP AF ClockL{nk: JP 0 ; Ers{tts med gamla klockavbrottet. TimeCount: DEFW DefTimeOut ;_ Initiering _ Conwrite: = 11 ChkLU: = 43 HLbuf1: = 81 IO: = 90 IO.Print: = 4 Y.Botm: = 65292 ; Botten av BASIC-minnet Y.Comtop: = 65328 ; Toppen av COMMON-variablerna Init: CALL Chain.Clr CALL Clinepar ; C = L{ngd, A = F|rsta tecken, Carry CP "0" JR C,I.x1 CP "9" + 1 JR NC,I.x1 CALL ASC2I LD (HardTimeOut),DE I.x1: CALL Chain.Load ; Chain-fil sist p} raden. L{nkain: LD HL,(HardTimeOut) INC H ; Kompensera f|r nedr{kningsmetoden. LD ($$TimeOut+1),HL LD HL,(Consi+1) LD ($$Consi+1),HL LD (PtrSav.Co),HL LD HL,(Y.Botm) LD (Ptrsav.Bt),HL LD HL,Consi.Ny LD (Consi+1),HL LD HL,Init ; Skydda programmet fr}n |verskrivning. LD (Y.Botm),HL LD (Y.Comtop),HL EXX PUSH HL ; Skydda relokeringsv{rdena. PUSH DE PUSH BC XOR A CALL ChkLU ; Hitta LU-blocket f|r fil nr 0. LD HL,Itext LD BC,Itextend-Itext LD A,IO.Print CALL NC IO ; Skriv ut texten p} fil nr 0. POP BC POP DE POP HL EXX RET Itext: DEFM "INPUTDOG Ver 1.00 har laddats! Av Kristoffer Eriksson 1986." DEFB 10,13 Itextend: DEFB 255 DEFM "PARM:Maximal v{ntetid f|r inmatning innan reset g|rs:" DEFB 0,3,0,0,2 ; Heltal 2 byte. HardTimeOut:DEFW DefTimeOut INCLUDE CLINEPAR ; Hitta kommandoraden. INCLUDE ENDINIT ; Initiering av filnamn }t ENDREL. INCLUDE ASC2I ; Omvandl text HL till tal i DE.