; Assembly language functions for MODEM3.PAS
; for Z80 processor.
; Written by Jack M. Wierda  Chicago Illinois
; This software is in the public domain.
;
; Routines: STAT, INPUT, OUTPUT, READMEM
;
       .FUNC   STAT,3
;
       POP     HL      ;GET RETURN ADDRESS
       POP     DE      ;GET ZERO
       POP     BC      ;GET ZERO
       POP     BC      ;GET MASK
       POP     DE      ;GET EXPECTED RESULT
       LD      D,C
       POP     BC      ;GET PORT
       IN      A,(C)   ;READ PORT
       AND     D       ;AND DATA & MASK
       CP      E       ;COMPARE WITH EXPECTED RESULTS
       JR      NZ,$1
       LD      DE,1    ;LOAD BOOLEAN TRUE
       PUSH    DE      ;RETURN RESULT ON STACK
       JP      (HL)
$1      LD      DE,0    ;LOAD BOOLEAN FALSE
       PUSH    DE      ;RETURN RESULT ON STACK
       JP      (HL)    ;RETURN
;
;
       .FUNC   INPUT,2
       ;
       POP     HL      ;GET RETURN ADDRESS
       POP     DE      ;GET ZERO
       POP     BC      ;GET ZERO
       POP     DE      ;GET MASK
       POP     BC      ;GET INPUT PORT
       IN      A,(C)   ;READ PORT
       AND     E       ;MASK DATA
       LD      E,A
       PUSH    DE      ;RETURN RESULT ON STACK
       JP      (HL)    ;RETURN
       ;
       ;
       .PROC   OUTPUT,2
       ;
       POP     HL      ;GET RETURN ADDRESS
       POP     DE      ;GET DATA
       POP     BC      ;GET OUTPUT PORT
       OUT     (C),E   ;OUTPUT DATA
       JP      (HL)    ;RETURN
       ;
       ;
       .FUNC   READMEM,1
;
       POP     HL      ;GET RETURN ADDRESS
       POP     DE      ;GET ZERO
       POP     BC      ;GET ZERO
       POP     DE      ;GET ADDRESS
       LD      A,(DE)  ;READ MEMORY
       LD      C,A
       PUSH    BC      ;RETURN RESULT ON STACK
       JP      (HL)    ;RETURN
       .END