home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol131 / litepen.src < prev    next >
Encoding:
Text File  |  1984-04-29  |  1.0 KB  |  49 lines

  1. * FUNCTION LIGHT_PEN : BOOLEAN ; EXTERNAL;
  2.  
  3. * READS THE PORT WHICH ADDRESSES THE LIGHT PEN.IF THE PEN IS 
  4. * SWITCHED ON THEN THE FUNCTION LIGHT_PEN ITSELF RETURNS TRUE.
  5. * IF THE PEN IS ACTIVATED ( E.G. BY THE LIGHT OF THE CURSOR )
  6. * THEN THE BOOLEAN VARIABLE CORRESPONDING TO "ON" RETURNS TRUE.
  7.  
  8. LOBYTE    EQU 02H        ; ACCESS TO ADDRESS FOR 
  9. HIBYTE    EQU 03H     ; RETURN VALUE OF FUNCTION.
  10. VBYTES    EQU 00H        ; NO. OF BYTES ON THE STACK.
  11. PORT    EQU 60H
  12. FALSE    EQU 00H
  13. TRUE    EQU NOT FALSE
  14. ON1    EQU 0C0H    ; PEN SIGNAL = ON AND ACTIVATED.
  15. ON2    EQU 0C1H    ;  "    "       "  "     "
  16.  
  17.     NAME    LIGHT_PEN
  18.     ENTRY    LIGHT_PEN
  19.     EXT    HEXOUT
  20.     INCLUDE MACRO.SRC
  21.  
  22. LIGHT_PEN:
  23.     ENTR D,2,VBYTES
  24.     JMP START
  25.  
  26. MSG1:    DB 'INPUT  BYTE  = $'
  27. CRLF:    DB 0DH,0AH,'$'
  28.  
  29. START:
  30.     IN PORT
  31.     PUSH PSW
  32.     CPI ON1            ; IF BYTE = 0C0H  
  33.     JZ YEP1            ; OR 0C1H THEN PEN
  34.     CPI ON2            ; WAS ON & TRIGGERED BY CURSOR.
  35.     JNZ NOPE
  36. YEP1:    MVI A,TRUE
  37.     JMP YEP
  38. NOPE:    MVI A,FALSE
  39. YEP:    MOV LOBYTE(IX),A
  40.     MOV HIBYTE(IX),A
  41.     POP PSW
  42.     PRINT CRLF
  43.     CURSOR 24,40
  44.     PRINT MSG1
  45.     CALL HEXOUT
  46.     PRINT CRLF
  47.     EXIT D,VBYTES
  48.     END LIGHT_PEN
  49.