;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Advanced Communication Board Developers Toolkit ;; (c) Copyright 1993-1995, Sealevel Systems Incorporated ;; ;; ACBLB.ASM - ASYNCRONOUS FORMAT, 9600 BAUD, NO PARITY, 8 STOP BITS, ;; 1 STOP BIT. SENDS AND RECEIVES ASCII CHARACTERS THROUGH LOOPBACK ;; CONNECTOR. POLLED PROGRAM ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H START: JMP OVER ;8530 INITIALIZATION VALUES - SEE 8530 DATA SHEET FOR DETAILS INIT DB 9,0C0H ;FORCE HARDWARE RESET DB 4,44H ;X16 MODE, 1 STOP BIT/CHARACTER DB 3,0C1H ;RX ENABLE, RX 8 BITS/CHARACTER DB 2,0 ;INTERRUPT VECTOR (NOT USED) DB 5,68H ;TX ENABLE, TX 8 BITS/CHARACTER DB 6,0 ;SYNC INFORMATION (NOT USED) DB 7,0 ;SYNC INFORMATION (NOT USED) DB 10,0 ;NRZ/FM/LOOP MODE (NOT USED) DB 11,56H ;RX CLOCK/TX CLOCK/TRxC OUT = B.R. GENERATOR DB 12,14 ;TIME CONSTANT - LOW BYTE DB 13,0 ;TIME CONSTANT - HIGH BYTE DB 14,3 ;BAUD RATE GENERATOR ENABLED/SOURCE DB 15,0 ;MISCELLANEOUS CONTROL BITS (NOT USED) DB 0,0D0H ;RESET TX UNDERRUN - RESET EXT/STATUS INTERRUPTS DB 1,00H ;NO DMA - NO INTS INITE LABEL BYTE MESS DB 'LOOPBACK TEST - LOOPBACK PLUG REQUIRED [Press any key to exit]$' OVER: MOV AH,6 ;CLEAR SCREEN MOV CX,0 MOV DX,184FH MOV BH,7 MOV AL,0 INT 10H MOV DX,0 ;SET CURSOR MOV AH,2 MOV BH,0 INT 10H MOV DX,OFFSET MESS MOV AH,9 INT 21H ;SETS UP 8530 - WRITES REGISTER NUMBER AND IT'S ASSOCIATED VALUE TO DATA PORT ; - NOTE: THIS IS A TWO STEP PROCESS MOV DX,239H ;CHANNEL (A) CONTROL PORT (BASE ADDRESS+1) ;CHANNEL (B) CONTROL PORT=23B HEX (BASE ADDRESS+3) MOV BX,OFFSET INIT ;LOCATION OF INITIALIZATION VALUES MOV CX,OFFSET INITE ;END OF DATA TABLE SUB CX,BX ;GET PARAMETER COUNT SAR CX,1 ;DIVIDE BY 2 L1: MOV AL,CS:[BX] ;GET REGISTER OUT DX,AL ;SEND TO 8530 CONTROL PORT INC BX ;INCREMENT TO PARAMETER MOV AL,CS:[BX] ;GET PARAMETER OUT DX,AL ;SEND TO 8530 CONTROL PORT INC BX ;INCREMENT TO REGISTER LOOP L1 ;LOOP UNTIL DONE MOV CX,10 ;LOOP COUNT MOV DX,0200H ;INITIAL CURSOR POSITION T3: MOV AH,2 ;SET CURSOR POSITION MOV BH,0 INT 10H PUSH DX ;SAVE CURSOR MOV BL,65 ;ASCII FOR (A) T2: MOV AL,BL ;MOVE TO AL REGISTER MOV DX,238H ;CHANNEL (A) DATA PORT (23A HEX FOR CHANNEL B) OUT DX,AL ;SEND IT T1: MOV AH,1 ;CHECK KEYBOARD INT 16H ;KEY PRESSED? JNZ XIT ;YES MOV DX,239H ;CHANNEL (A) CONTROL PORT MOV AL,0 ;READ REGISTER 0 OUT DX,AL JMP $+2 ;DELAY FOR 8530 RECOVERY TIME IN AL,DX ;GET STATUS FROM READ REGISTER 0 AND AL,1 ;TEST FOR DATA READY JZ T1 ;NO DATA READY MOV DX,238H ;CHANNEL (A) DATA PORT IN AL,DX ;READ CHARACTER MOV AH,14 ;PRINT IT MOV BH,0 INT 10H INC BL ;MOVE TO NEXT LETTER CMP BL,122 ;ASCII LESS THAN (z)? JLE T2 ;YES POP DX ;RESTORE CURSOR POSITION INC DH ;INCRIMENT LINE # LOOP T3 ;LOOP UNTIL DONE XIT: MOV AX,4C00H ;TERMINATE PROGRAM INT 21H CODE ENDS END START