home *** CD-ROM | disk | FTP | other *** search
- DECLARE SUB Bildschirm ()
- DECLARE SUB InitCom1 ()
- DECLARE SUB DispTypeBox ()
- DECLARE SUB ClearTypeBox ()
- DECLARE SUB TypeZeichen (Zeichen$)
- '* ------------------------------------------------------- *
- '* TOOLTALK.BAS *
- '* Realisierung eines einfachen Fernschreibers *
- '* zwischen zwei PC über die serielle Schnittstelle *
- '* (c) 1989 W.Rinke & TOOLBOX *
- '* ------------------------------------------------------- *
- TYPE Regs
- AX AS INTEGER
- BX AS INTEGER
- CX AS INTEGER
- DX AS INTEGER
- BP AS INTEGER
- SI AS INTEGER
- DI AS INTEGER
- FLAGS AS INTEGER
- DS AS INTEGER
- ES AS INTEGER
- END TYPE
-
- DIM InRegs AS Regs, OutRegs AS Regs
-
- box1$ = CHR$(214) + STRING$(58, 196) + CHR$(183)
- box2$ = CHR$(186) + STRING$(58, 176) + CHR$(186)
- box3$ = CHR$(186) + STRING$(58, 176) + CHR$(186)
- box4$ = CHR$(211) + STRING$(58, 196) + CHR$(189)
-
-
- CALL Bildschirm
- CALL InitCom1
-
- DO
- DO
- Antwort$ = INKEY$
- LOOP UNTIL Antwort$ > "0" AND Antwort$ < "4"
- IF Antwort$ = "1" THEN
- CALL DispTypeBox
- DO '* Senden
- Leitungsstatus = INP(&H3FD)
- IF (Leitungsstatus AND 2 ^ 5) = 32 THEN
- Sendezeichen$ = INKEY$
- IF Sendezeichen$ <> "" THEN
- CALL TypeZeichen(Sendezeichen$)
- OUT &H3F8, ASC(Sendezeichen$)
- END IF
- END IF
- LOOP UNTIL Sendezeichen$ = "@"
- CALL ClearTypeBox
- COLOR 7, 1
- END IF
- IF Antwort$ = "2" THEN
- CALL DispTypeBox
- DO '* Empfangen
- Leitungsstatus = INP(&H3FD)
- IF (Leitungsstatus AND 2 ^ 0) = 1 THEN
- Empfangszeichen$ = CHR$(INP(&H3F8))
- CALL TypeZeichen(Empfangszeichen$)
- END IF
- InRegs.AX = &H100 '* Tastatur auslesen
- CALL INTERRUPT(&H16, InRegs, OutRegs)
- Taste = OutRegs.AX \ 4 '* entspricht einem SHR 2
- LOOP UNTIL Taste = 3 OR Empfangszeichen$ = CHR$(64)
- '* <Ctrl><Break> oder "@"
- CALL ClearTypeBox
- END IF
- LOOP UNTIL Antwort$ = "3"
-
- END
-
- SUB Bildschirm
- '* ---------------------------------------------------------
- '* Grundbildschirm aufbauen
- CLS
- COLOR 7, 1
- LOCATE 2, 2: PRINT CHR$(201); STRING$(76, 205); CHR$(187)
- FOR i% = 3 TO 5
- LOCATE i%, 2: PRINT CHR$(186); STRING$(76, 176); CHR$(186)
- NEXT i%
- LOCATE 6, 2: PRINT CHR$(186); STRING$(23, 176);
- COLOR 1, 7
- PRINT CHR$(201); STRING$(28, 205); CHR$(187);
- COLOR 7, 1
- PRINT STRING$(23, 176); CHR$(186);
- FOR i% = 7 TO 13
- LOCATE i%, 2: PRINT CHR$(186); STRING$(23, 176);
- COLOR 1, 7
- PRINT CHR$(186); STRING$(28, 176); CHR$(186);
- COLOR 1, 0: PRINT CHR$(176); : COLOR 7, 1
- PRINT STRING$(22, 176); CHR$(186)
- NEXT i%
- LOCATE 14, 2: PRINT CHR$(186); STRING$(23, 176);
- COLOR 1, 7
- PRINT CHR$(200); STRING$(28, 205); CHR$(188);
- COLOR 1, 0: PRINT CHR$(176); : COLOR 7, 1
- PRINT STRING$(22, 176); CHR$(186)
- LOCATE 15, 2: PRINT CHR$(186); STRING$(24, 176);
- COLOR 1, 0: PRINT STRING$(30, 176);
- COLOR 7, 1
- PRINT STRING$(22, 176); CHR$(186)
- FOR i% = 16 TO 23
- LOCATE i%, 2: PRINT CHR$(186); STRING$(76, 176); CHR$(186)
- NEXT i%
- LOCATE 24, 2: PRINT CHR$(200); STRING$(76, 205); CHR$(188);
-
- COLOR 1, 7
-
- LOCATE 6, 32: PRINT " Datenübertragung "
- LOCATE 8, 32: PRINT " [1] Senden "
- LOCATE 9, 32: PRINT " [2] Empfangen "
- LOCATE 10, 32: PRINT " [3] Beenden "
- LOCATE 12, 32: PRINT " Bitte wählen... "
-
- COLOR 7, 1
-
- END SUB
-
- SUB ClearTypeBox
-
- COLOR 7, 1
-
- FOR i% = 17 TO 21
- LOCATE i%, 10: PRINT STRING$(61, 176);
- NEXT i%
-
- END SUB
-
- SUB DispTypeBox
- '* ---------------------------------------------------------
- '* Anzeigen der Typebox
-
- SHARED box1$, box2$, box3$, box4$
-
- LOCATE 17, 10: COLOR 1, 7
- PRINT box1$
- LOCATE 18, 10
- PRINT box2$; : COLOR 1, 0: PRINT CHR$(176);
- LOCATE 19, 10: COLOR 1, 7
- PRINT box3$; : COLOR 1, 0: PRINT CHR$(176);
- LOCATE 20, 10: COLOR 1, 7
- PRINT box4$; : COLOR 1, 0: PRINT CHR$(176);
- LOCATE 21, 11: PRINT STRING$(60, 176);
- LOCATE 18, 12: COLOR 1, 7: Spalte% = 0: Zeile% = 1
-
- END SUB
-
- SUB InitCom1
- '* ---------------------------------------------------------
- '* Initialisieren von COM1: mit 9600 Baud, keiner Parität
- '* einem Stopbit und 8 Bit Zeichenlänge
-
- DIM InRegs AS Regs, OutRegs AS Regs
-
- InRegs.AX = &HE3
- CALL INTERRUPT(&H14, InRegs, OutRegs)
-
- OUT &H3FC, 3
- '* Setzen von Bit 0 und 1 im Modemkontrollregister
-
- END SUB
-
- SUB TypeZeichen (Zeichen$)
- STATIC Zeile%, Spalte%
-
- IF Zeichen$ = CHR$(13) THEN
- Zeile% = Zeile% + 1
- Spalte% = 0
- END IF
- IF Spalte% > 55 THEN
- Spalte% = 0
- Zeile% = Zeile% + 1
- END IF
- IF Zeile% > 1 THEN Zeile% = 1
- LOCATE 18 + Zeile%, Spalte% + 12
- PRINT Zeichen$;
- Spalte% = Spalte% + 1
-
- END SUB
- '* ------------------------------------------------------- *
- '* Ende von TOOLTALK.BAS *