Benny Löfgren SYSOP
<2615>
· Text 9642 · w8 · kommentar
1990-08-20 12:47
Ärende: DTC-II Tangentbord
(Ursäkta att kommentaren är lite sen, vet inte om diskussionen är avslutad
men ändå...)
DTC II:an har en helt annan tangentbordshantering än vad ABC80X har.
Tangentbordet har ingen inbyggd konverteringsfunktion, utan varje tangent
skickar sin position på tangentbordet enligt en viss tabell. Dessutom
skickas information om huruvida tangenten trycks ner eller släpps upp.
Tanken är att man får ett interrupt för varje tangentrörelse, och genom
att titta efter vilken tangent och om den tryckts ner eller släppts upp
kan man exakt avgöra vilken eller vilka tangenter som för tillfället
tryckts ner.
Det är samma funktion som ABC77 och ABC99-borden har om man sätter det
i så kallad UP/DOWN-mode.
Om man vill testa ifall en tangent tryckts ner, så man inte blir hängande
om man gör GET mot tangentbordet så kan SYS(5) med fördel användas. Vill
man ha koll på om en tangent HÅLLS NERE just i det ögonblick man testar
kan man på ABC802 och ABC806 använda SYS(8). På ABC800 finns inte någon
möjlighet att göra detta. Jag är rätt säker på att DTC II också supportar
SYS(8), men det kanske blir problem eftersom den även har en större
tangentbordsbuffert med type-ahead.
1) Alltså, beroende på vad man vill göra finns det två bra sätt att kolla
tangentbordets status, SYS(5) och SYS(8).
2) För att ta reda på vilken tangent som tryckts ner använder man lämpligen
GET. Om man använder SYS(8) kanske det är lämpligare att läsa direkt
tangentbordsbufferten. Eftersom DTC II som sagt har type-ahead vet jag
inte hur det fungerar, men jag tror att man alltid kan läsa sist nedtryckta
tangents tecken på adress 65507 precis som på alla ABC:er.
Tangentbordsflaggan på adress 65506 är för övrigt samma som används när
SYS(6), som ju återställer sist tryckta tangent till tangentbordsbufferten
gör i själva verket inte det utan sätter flaggan på 65506 och lurar därmed
datorn att tro att det kommit ett nytt tecken.
3) I DTC II kan man ju som sagt inte använda INP(34), eftersom man inte
får tangentkoden översatt till något begripligt då. Jag tror att det
närmaste man kommer är att kika i adress 65507.