353 lines
4.7 KiB
ArmAsm
353 lines
4.7 KiB
ArmAsm
*P 84
|
|
|
|
;TERMINAL-EMULATOR MODUL FUER DAS REMOTE-PAKET
|
|
;REM.CRTEM.S
|
|
|
|
;EXTERNE GROESSEN AUS DEM GERAETESPEZ. TEIL:
|
|
EXTERNAL SYSTEM ACTCMD DEACT
|
|
EXTERNAL INIPTY RESPTY
|
|
EXTERNAL LODTTY SNDTTY
|
|
EXTERNAL HWSTART
|
|
EXTERNAL HWINIT
|
|
|
|
;EXTERNE GROESSEN AUS DEM DATEI-AKTIVITAETEN-MODUL:
|
|
EXTERNAL ACTION ACTFLG ACTNOW MORACT
|
|
|
|
GLOBAL PUTMSG PUTSTR
|
|
GLOBAL LODNET
|
|
GLOBAL NETSND
|
|
GLOBAL ERROR
|
|
GLOBAL LOOP
|
|
GLOBAL SNDNET RETURN
|
|
GLOBAL CHAR1 CHAR2 CHAR3
|
|
|
|
|
|
ENTRY: ;REMOTE ENTRY
|
|
INIT: ;INITIALIZE REMOTE WORKING
|
|
LD (STACK),SP
|
|
CALL INIPTY
|
|
CALL HWINIT
|
|
LD HL,ACTFLG
|
|
LD (HL),0
|
|
LD IY,ACTCMD
|
|
CALL SYSTEM
|
|
BIT 6,(IY+0AH)
|
|
JP NZ,ACTIFL
|
|
LD IY,ASGNVC
|
|
CALL SYSTEM
|
|
BIT 6,(IY+0AH)
|
|
JR Z,NETOK
|
|
LD HL,NODEVM
|
|
CALL PUTMSG ;PUT NODEVMESSAGE OUT AND RETURN TO UDOS
|
|
XOR A
|
|
JP RETURN
|
|
|
|
CAPMSG:
|
|
DEFB CAPLEN ;STRING LENGTH OF MSG
|
|
DEFM 'You are now connected with the WEGA-System !'
|
|
DEFB 0DH
|
|
CAPLEN: EQU $-CAPMSG-1
|
|
|
|
NETOK:
|
|
LD HL,CAPMSG
|
|
CALL PUTMSG
|
|
LD IY,NETSTW
|
|
CALL SYSTEM ;SET THE NET-PARAMETERS
|
|
ld a,0dh
|
|
call SNDNET
|
|
|
|
;++++++++++
|
|
;TERMINAL MODE
|
|
;FUER P8000: START U8000 !!!
|
|
CALL HWSTART
|
|
|
|
LOOP:
|
|
LD HL,COUNT
|
|
LD (HL),060H
|
|
LOOP1:
|
|
CALL LODNET
|
|
PUSH AF
|
|
CALL LODTTY
|
|
LGOON: PUSH AF
|
|
CALL NZ,SNDNET
|
|
POP AF
|
|
JR Z,LOOP4
|
|
AND 7FH
|
|
CP 13H ;^S
|
|
JR NZ,LOOP4
|
|
LWAIT: CALL LODTTY
|
|
JR Z,LWAIT
|
|
LD HL,COUNT
|
|
INC (HL)
|
|
DEC (HL)
|
|
JR NZ,LGOON ;COUNT DARF BEI FILE UEBERTRAGUNG IM
|
|
;TERMINALMODE NIE 0 WERDEN, DH ZUR
|
|
;FILE UEBERTRAGUNG MUESSEN BLOCKLAENGEN
|
|
;KLEINER C0H VERWENDET WERDEN, WAS AUCH
|
|
;DER FALL IST (QUITTUNGSBETRIEB)
|
|
;NUR GUELTIG FALLS REMOTE SYSTEM (HOST)
|
|
;UEBER MEHRERE LOCAL SYSTEME BEDIENT WIRD
|
|
LD (HL),1
|
|
JR LGOON
|
|
|
|
LOOP4: POP AF
|
|
LD HL,COUNT
|
|
JR NZ,LOOP2
|
|
|
|
LD A,(HL) ;NO CHAR FROM NET
|
|
LD (HL),060H
|
|
OR A
|
|
LD A,11H ;^Q
|
|
CALL Z,SNDNET
|
|
JR LOOP1
|
|
|
|
LOOP2: PUSH AF
|
|
LD A,(HL)
|
|
OR A
|
|
JR Z,LOOP3
|
|
DEC (HL)
|
|
LD A,13H ;^S
|
|
CALL Z,SNDNET
|
|
LOOP3: POP AF
|
|
|
|
PUSH AF
|
|
AND 7FH
|
|
LD HL,ACTFLG
|
|
BIT 0,(HL)
|
|
JR NZ,OVLUP1
|
|
|
|
CP 01H ;CTRL-A STARTS ALL COMMAND SEQUENCES
|
|
JR NZ, NOACTN
|
|
JP ACTION
|
|
|
|
OVLUP1: BIT 1,(HL)
|
|
JP NZ,ACTNOW
|
|
CP 1BH ;ESCAPE
|
|
JP Z, MORACT
|
|
|
|
RES 0,(HL)
|
|
LD A,(CHAR1) ;SEND OLD CHAR
|
|
CALL SNDTTY
|
|
|
|
NOACTN: POP AF
|
|
CALL SNDTTY
|
|
JR LOOP1
|
|
|
|
COUNT: DEFB 0C0H
|
|
CHAR1: DEFS 1
|
|
CHAR2: DEFS 1
|
|
CHAR3: DEFS 1
|
|
|
|
;++++++++++
|
|
;RETURN TO LOCAL
|
|
|
|
RETURN:
|
|
LD SP,(STACK)
|
|
PUSH AF
|
|
LD IY,DEACT
|
|
CALL SYSTEM
|
|
POP AF
|
|
|
|
LD HL,RMSG1
|
|
CALL NZ,PUTMSG
|
|
LD HL,RMSG2
|
|
CALL PUTMSG
|
|
CALL RESPTY
|
|
RET
|
|
|
|
RMSG1: DEFT 'Logout and'
|
|
RMSG2: DEFB RLEN2
|
|
DEFM 'Return to Local-System'
|
|
DEFB 0DH
|
|
RLEN2: EQU $-RMSG2-1
|
|
|
|
|
|
;++++++++++
|
|
;LOAD A BYTE FORM NET
|
|
|
|
LODNET:
|
|
LD IY,NETSTR
|
|
CALL SYSTEM ;READ NET STATUS
|
|
LD A,(NETSTS)
|
|
BIT 7,A ;ARE THERE CHAR IN INPUTBUFFER
|
|
RET Z
|
|
|
|
LD IY,NETVCR ;READ-ABSOLUTE FROM NET
|
|
CALL SYSTEM
|
|
OR 01
|
|
LD A,(CHRBUF)
|
|
RET ;NZ-RETURN IF CHAR IN CHRBUF
|
|
|
|
;++++++++++
|
|
;SEND A BYTE TO NET
|
|
|
|
SNDNET:
|
|
LD (CHRBUF),A
|
|
LD IY,NETVCW ;WRITE ABSOLUT TO NET
|
|
JP SYSTEM
|
|
|
|
NETSND:
|
|
LD A,(HL)
|
|
CP 80H
|
|
RET Z
|
|
INC HL
|
|
PUSH HL
|
|
CALL SNDNET
|
|
POP HL
|
|
JR NETSND
|
|
|
|
;++++++++++
|
|
;NET DRIVER NOT ACTIVATE
|
|
|
|
ACTIFL:
|
|
LD HL,ACTFAL
|
|
CALL PUTMSG ;ACTIVATE FAILED MESSAGE AND UDOS-RETURN
|
|
XOR A
|
|
JP RETURN
|
|
|
|
ACTFAL: DEFB 10H
|
|
DEFM 'ACTIVATE FAILED '
|
|
|
|
|
|
;++++++++++
|
|
;ERROR
|
|
|
|
ERROR:
|
|
LD A,(IY+0AH)
|
|
LD HL,ERRMSN
|
|
CALL BTOHEX
|
|
LD HL,ERRMSG
|
|
|
|
PUTMSG:
|
|
LD DE,OUTBUF
|
|
LD A,(HL)
|
|
INC A
|
|
LD C,A
|
|
LD B,0
|
|
PUSH DE
|
|
LDIR
|
|
EX DE,HL
|
|
LD (HL),0DH
|
|
POP HL ;HL = OUTBUF
|
|
LD (HL),A
|
|
PUTSTR:
|
|
LD A,(HL)
|
|
INC HL
|
|
LD (STRDTA),HL
|
|
LD (STRLEN),A
|
|
LD IY,STRVEC
|
|
CALL SYSTEM
|
|
CALL INIPTY
|
|
RET
|
|
|
|
BTOHEX:
|
|
PUSH AF
|
|
RRCA
|
|
RRCA
|
|
RRCA
|
|
RRCA
|
|
CALL BYTE1
|
|
POP AF
|
|
BYTE1:
|
|
AND 0FH
|
|
CP 0AH
|
|
JR C,HEXDIG
|
|
ADD A,07
|
|
HEXDIG:
|
|
ADD A,30H ;ADD ASCII-BIAS
|
|
LD (HL),A
|
|
INC HL
|
|
RET
|
|
|
|
|
|
;RAM-DEFINITIONEN UND DATA SECTION
|
|
|
|
ERRMSG: DEFB 0DH ;STRLENGTH OF ERRMSG
|
|
DEFM 'FILE ERROR '
|
|
ERRMSN: DEFW 2020H
|
|
NODEVM: DEFB 1BH ;LENGTHGH OF NODEVM
|
|
DEFM 'INVALID OR INACTIVE DEVICE '
|
|
|
|
|
|
|
|
;VECTOREN FUER UDOS-CALLS
|
|
|
|
ASGNVC: DEFB 19 ;NET ASSIGN
|
|
DEFB 2
|
|
DEFW 0
|
|
DEFW 0
|
|
DEFW 0
|
|
DEFW 0
|
|
DEFB 0
|
|
DEFW ASGSPV
|
|
ASGSPV:
|
|
DEFB 80H
|
|
|
|
NETSTW: DEFB 19 ;NET STATUS WRITE
|
|
DEFB 42H
|
|
DEFW NETSET
|
|
DEFW 7
|
|
DEFW 0
|
|
DEFW 0
|
|
DEFB 0
|
|
DEFW 0
|
|
;
|
|
; ACHTUNG!!! STATUS FUER $SI-TREIBER DES P8000 !!!
|
|
; (UNTERSCHIEDLICH ZUM $SIBDRIVER UND $ASVDRIVER)
|
|
;
|
|
NETSET:
|
|
DEFB 0
|
|
DEFB 7CH
|
|
DEFB 0FFH
|
|
DEFB 82H
|
|
DEFB 83H
|
|
DEFB 4 ;ZEITKONSTANTE BAUDRATE
|
|
; 4 = 9600 BAUD
|
|
DEFB 00
|
|
NETMSK: DEFB 7FH
|
|
|
|
NETSTR: DEFB 19 ;NET STATUS READ
|
|
DEFB 40H
|
|
DEFW NETSTS
|
|
DEFW 1
|
|
DEFW 0
|
|
DEFW 0
|
|
DEFB 0
|
|
DEFW 0
|
|
|
|
NETSTS:
|
|
DEFS 1
|
|
|
|
NETVCR: DEFB 19 ;NET READ ABSOLUT
|
|
DEFB 46H
|
|
DEFW CHRBUF
|
|
DEFW 1
|
|
DEFW 0
|
|
DEFW 0
|
|
DEFB 0
|
|
DEFW 0
|
|
|
|
CHRBUF: DEFS 1
|
|
|
|
NETVCW: DEFB 19 ;NET WRITE ABSOLUTE
|
|
DEFB 48H
|
|
DEFW CHRBUF
|
|
DEFW 1
|
|
DEFW 0
|
|
DEFW 0
|
|
DEFB 0
|
|
DEFW 0
|
|
|
|
|
|
STRVEC: DEFB 02 ;CON WRITE BIN
|
|
DEFB 0EH
|
|
STRDTA: DEFS 2
|
|
STRLEN: DEFS 2
|
|
DEFW 0
|
|
DEFW 0
|
|
DEFB 0
|
|
DEFW 0
|
|
|
|
STACK: DEFS 20H
|
|
OUTBUF: DEFS 81
|