; Assembly language functions for MODEM3.PAS
; for Intel 8080 processor.
; Written by Jack M. Wierda  Chicago Illinois
; This software is in the public domain.
;
; Routines: STAT, INPUT, OUTPUT
;
       .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
       LD      A,C     ;PUT PORT IN A
       LD      ($1+1),A  ;STUFF PORT
$1      IN      A,(0)     ;PORT LOADED ABOVE
       AND     D       ;AND DATA & MASK
       CP      E       ;COMPARE WITH EXPECTED RESULTS
       JP      NZ,$2
       LD      DE,1    ;LOAD BOOLEAN TRUE
       PUSH    DE      ;RETURN RESULT ON STACK
       JP      (HL)
$2      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
       LD      A,C     ;PUT PORT IN A
       LD      ($1+1),A  ;STUFF PORT
$1      IN      A,(0)     ;PORT LOADED ABOVE
       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
       LD      A,C     ;PUT PORT IN A
       LD      ($1+1),A  ;STUFF PORT
       LD      A,E     ;PUT DATA IN A
$1      OUT     (0),A     ;PORT LOADED ABOVE
       JP      (HL)    ;RETURN
;
;
       .END