home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 June
/
SIMTEL_0692.cdr
/
msdos
/
modem
/
tdd56.arc
/
TDD43.M69
< prev
next >
Wrap
Text File
|
1985-03-16
|
8KB
|
378 lines
; TDD VERSION 4.3
; BY JOHN W. SPALDING
; SELF RELOCATING
; MAY BE ROM RESIDENT
; THIS VERSION TO BE ASSEMBLED
; BY COMPUSERVE'S MAC69.
INTSOFF = $50
INTSON = $EF
BLUE = 175
ORANGE = 249
BAUD = 173
; PAGE ZERO VARIBLES:
TOP = $100
SIGNAL = TOP-1
RSTROB = TOP-2
DATA = TOP-3
SHIFT = TOP-4
CURCHR = TOP-5
CHRBUF = TOP-6
XSHIFT = TOP-7
STROB = TOP-8
SHFTRG = TOP-10
CLOCK = TOP-12
INTA = TOP-13
FREQ = TOP-14
ROLOVR = TOP-22
STACK = $4000
; INITIALIZE PG 0 STORAGE
ORG $100
START ORCC #INTSOFF
LDA #0
TFR A,DP
LDS #STACK
LDX #TOP
P0INIT CLR ,-X
CMPX #FREQ
BHI P0INIT
COMA
P0INI2 STA ,-X
CMPX #ROLOVR
BHI P0INI2
LDD #1
STD CLOCK
LDA #3
STA FREQ
LDA #BLUE
STA CURCHR
; MORE INITIALIZATION
LBSR CURSUB
LEAX MSG1,PCR
LBSR PRINTS
LDD #$3C34
STA $FF01
STA $FF23
STB $FF03
LDA $FF20
ANDA #3
STA $FF20
AGAIN LEAU RCVINT,PCR
STU $10D
LDA #$3D
STA $FF01
CLR $FF02
ANDCC #INTSON
; MAIN LOOP
; LOOK FOR A START BIT
SEARC1 LDB #100
SEARC2 SYNC
LDA SHFTRG
CMPA #$55
BEQ SBIT
DECB
BNE SEARC2
; DETECT RING/BUSY SIGNAL
LDB #BLUE
ROLA
LDA SIGNAL
RORA
STA SIGNAL
BEQ RSTSGN
COMA
BEQ RSTSGN
LDB #ORANGE
RSTSGN STB [$88]
; TEST THE KEYBOARD
LDA RSTROB
LSLA
CMPA #$FE
LBNE KEYIN
BRA SEARC1
; HAVE A START BIT
SBIT LDB #ORANGE
STB [$88]
LDB #BAUD+BAUD/8
SWAIT SYNC
DECB
BNE SWAIT
; READY TO SHFT DATA BITS
CLR DATA
LDX #5
LDA #$55
DBIT LDB #BAUD
DTRY SYNC
DECB
CMPA SHFTRG
BEQ DHAVE
CMPB #BAUD*2/3
BHS DTRY
ORCC #1
DHAVE ROR DATA
DWAIT SYNC
DECB
BNE DWAIT
LEAX -1,X
BNE DBIT
; HAVE A CHARACTER
LDA DATA
LSRA
LSRA
LSRA
ANDA #$1F
; PRINT WITH INTS MASKED
ORCC #INTSOFF
BSR PRINT
ANDCC #INTSON
BRA SEARC1
; PRINT SUBROUTINES:
; PRINT ASCII STRING
PRINT1 BSR PRINTA
PRINTS LDA ,X+
BNE PRINT1
RTS
; PRINT ASCII CHARACTER
PRINTA PSHS A,B,X,Y
BRA NOTFL
; PRINT BAUDOT CHARACTER
; BAUDOT CODE IS IN ACCA
PRINT PSHS A,B,X,Y
ORA SHIFT
LEAX BAUDAS,PCR
LDA A,X
BPL NOTFL
ANDA #$20
STA SHIFT
BRA PRINTZ
; PRINTABLE CHARACTER
NOTFL BSR CURSUB
LDX $88
CMPA #$08
BLO CURSOK
BNE NOTBS
TFR X,D
ANDB #$1F
BEQ CURSOK
LEAX -1,X
BRA CURSOK
NOTBS CMPA #$0A
BNE NOTLF
LEAX 32,X
BRA TSTCUR
NOTLF CMPA #$0D
BNE NOTCR
TFR X,D
ANDB #$E0
TFR D,X
BRA CURSOK
NOTCR ORA #$40
STOCHR STA ,X+
TSTCUR CMPX #$600
BLO CURSOK
LDY #$400
SCROLL LDA 32,Y
STA ,Y+
CMPY #$5E0
BLO SCROLL
LDA #$60
CLREND STA ,Y+
CMPY #$600
BLO CLREND
LEAX -32,X
CURSOK STX $88
BSR CURSUB
PRINTZ PULS A,B,X,Y,PC
; NON DESTRUCTIVE CURSOR
CURSUB PSHS A,B
LDA CURCHR
LDB [$88]
STB CURCHR
STA [$88]
PULS A,B,PC
; TRANSMIT ROUTINE
KEYIN LDA #BLUE
STA [$88]
LEAU HSINT,PCR
STU $10D
LDA #$35
STA $FF01
LDA #1
STA XSHIFT
; SCAN THE KEYBOARD
GETCHR LDX #200
GETCH2 LDA CHRBUF
BNE GOTCHR
LBSR POLCAT
BNE GOTCHR
LEAX -1,X
BNE GETCH2
LBRA AGAIN
GOTCHR CLR CHRBUF
TFR A,B
ANDA #$20
ANDB #$1F
CMPA XSHIFT
BEQ SHFTOK
STA XSHIFT
LDA #$1B
BHS XMSHFT
LDA #$1F
XMSHFT BSR XMIT
SHFTOK TFR B,A
BSR XMIT
BRA GETCHR
XMIT PSHS A,B
LBSR PRINT
CLR CLOCK
ORCC #$01
BSR XMIB
ANDCC #$FE
BSR XMIB
LDB #5
XMIL LSRA
BSR XMIB
DECB
BNE XMIL
ORCC #1
BSR XMIB
PULS A,B,PC
; ROUTINE TO XMIT C BIT
XMIB PSHS CC,B
LDB #1
ROLB
STB FREQ
CLR CLOCK
PSHS A,B,U
LDA CHRBUF
BNE BUFULL
LBSR POLCAT
STA CHRBUF
BUFULL PULS A,B,U
XWAIT LDB CLOCK
CMPB #BAUD
BLO XWAIT
PULS CC,B,PC
; KEYBOARD SCAN ROUTINE
; USES A,B AND U
POLCAT LDU #8+ROLOVR
LDB #$7F
STB $FF02
SCAN1 SYNC
LDA STROB
ORA #$80
TFR A,B
EORA -1,U
ANDA -1,U
PSHU B
BNE KEYHIT
ORCC #1
ROR $FF02
BCS SCAN1
BRA POLZIP
; A KEY WAS HIT
KEYHIT LEAU 8,U
LSRA
BCC KEYHIT
TFR U,D
SUBD #8+ROLOVR
LEAU KYBAUD,PCR
LEAU D,U
LDA ,U
LDB 7+ROLOVR
LSLB
BMI KYLTRS
LDA 56,U
KYLTRS CMPA #'?
BNE POLRET
POLZIP CLRA
POLRET RTS
; RECV INTERRUPT ROUTINE
RCVINT LDA $FF00
STA RSTROB
LDA $FF20
RORA
LDD SHFTRG
EXG A,B
RORA
STD SHFTRG
SYNC
LDA $FF00
RTI
; XMIT INTERRUPT ROUTINE
HSINT LDA $FF00
STA STROB
LDD CLOCK
DECB
BNE INTR
LDB $FF20
EORB #$FC
STB $FF20
BMI INT2
SYNC
LDB $FF00
LDB INTA
ADDB #$80
STB INTA
ADCA FREQ
ADDA #2
LDB #2
BRA INTR
INT2 LDB FREQ
INTR STD CLOCK
SYNC
LDA $FF00
RTI
; BAUDOT TO ASCII TABLE
; LTRS:
BAUDAS FCB $08
FCC /E/
FCB 10
FCC /A SIU/
FCB 13
FCC /DRJNFCK/
FCC /TZLWHYP/
FCC /QOBG/
FCB $A0
FCC /MXV/
FCB 0
; FIGS:
FCB $08
FCC /3/
FCB 10
FCC /- \87/
FCB 13
FCC /$4',!:(/
FCC /5")2#60/
FCC /19?&/
FCB 0
FCC ?./;?
BAUDAZ FCB $80
; KEYBOARD SCAN TO BAUDOT
; TRANSLATE TABLE - CODED
; IN ASCII - BITS 0-4 ARE
; BAUDOT CODE - BIT 5 IS
; SHIFT BIT - 6,7 IGNORED
KYBAUD FCC /?CYNIAMZ/
FCC /TFKOR\LX/
FCC /VWJEPG^S/
FCC /]UQ?B@?D/
FCC /673!*05'/
FCC /&8.~,#|=/
FCC /H???????/
; SHIFTED:
FCC /?#9.)!-:/
FCC ?4&+/2|,8?
FCC /67*%0'~3/
FCC /=51?" ?$/
FCC /?-14)?:+/
FCC +/2?????9+
FCC /(???????/
MSG1 FDB $0D0A
FCC /TDD VERSION 4.3/
FDB $0D0A
FCC /BY JOHN W. SPALDING/
FDB $0D0A
FDB $0A00
ZSIZE = *-START
ZLAST = *-1
END