home *** CD-ROM | disk | FTP | other *** search
/ kermit.columbia.edu / kermit.columbia.edu.tar / kermit.columbia.edu / trs80model1+3 / trsmore.src < prev    next >
Text File  |  1984-05-27  |  14KB  |  605 lines

  1. ; THIS IS WHERE WE GO IF WE GET AN ERROR DURING A PROTOCOL COMMUNICATION.
  2. ;   CALL ERROR PRINTS THE ERROR PACKET ON LINE 6 OR SO.
  3. ;   CALL ERROR1 PRINT CRLF FOLLOWED BY THE ERROR PACKET.
  4. ;   CALL ERROR2 JUST PRINTS THE ERROR PACKET.
  5. ;   CALL ERROR3 POSITIONS CURSOR AND PRINTS ERROR MESSAGE SPECIFIED IN DE.
  6. ERROR:    CALL   ERROR9        ; POSITION THE CURSOR.
  7.     LD     A,'A'        ; SET THE STATE TO ABORT.
  8.     LD     (STATE),A
  9.     JP     ERROR2
  10. ERROR1:    LD     DE,CRLF        ; PRINT A CRLF.
  11.     CALL   PRTSTR
  12. ERROR2:    LD     A,(ARGBLK+1)    ; GET THE LENGTH OF THE DATA.
  13.     LD     C,A
  14.     LD     B,0        ; PUT IT INTO BC
  15.     LD     HL,DATA        ; GET THE ADDRESS OF THE DATA.
  16.     ADD    HL,BC        ; GET TO THE END OF THE STRING.
  17.     LD     A,'$'        ; PUT A DOLLAR SIGN AT THE END.
  18.     LD     (HL),A
  19.     LD     DE,DATA        ; PRINT ERROR MESSAGE
  20.     CALL   PRTSTR
  21.     RET
  22. ERROR3:    PUSH   DE        ; SAVE THE POINTER TO THE MESSAGE.
  23.     CALL   ERROR9        ; POSITION THE CURSOR.
  24.     LD     DE,CLRLIN    ; CLEAR THE LINE
  25.     CALL   PRTSTR
  26.     POP    DE        ; GET THE POINTER BACK.
  27.     CALL   PRTSTR        ; PRINT ERROR MESSAGE
  28.     RET
  29. ERROR9:    LD     DE,SCRERR    ; POSITION CURSOR
  30.     CALL    PRTSTR
  31.     RET
  32. ERRORD:    OR    A    ;display disk error
  33.     RET    Z
  34.     OR    80H
  35.     OR    40H
  36.     CALL    @ERROR
  37.     RET
  38. FINMES:    PUSH   DE        ; SAVE MESSAGE.
  39.     LD    DE,SCRST
  40.     CALL    PRTSTR
  41.     POP    DE        ; PRINT THE TERMINATION MESSAGE
  42.     CALL   PRTSTR
  43.     LD     DE,SCREND    ; POSITION CURSOR FOR PROMPT
  44.     CALL    PRTSTR
  45.     RET
  46. ; THIS IS THE FINISH COMMAND.  IT TELLS THE REMOTE KERSRV TO EXIT.
  47. FINISH:    LD     A,CMCFM
  48.     CALL   COMND        ; GET A CONFIRM.
  49.     JP    KERMT3
  50.     XOR    A        ;  DIDN'T GET A CONFIRM.
  51.     LD     (NUMTRY),A    ; INITITIALIZE COUNT.
  52.     LD     A,'1'        ; RESET BLOCK CHECK TYPE TO SINGLE CHARACTER
  53.     LD     (CURCHK),A    ;  .  .  .
  54. FINSH1:    LD     A,(NUMTRY)    ; HOW MANY TIMES HAVE WE TRIED?
  55.     CP     MAXTRY        ; TOO MANY TIMES?
  56.     JP     M,FINSH3        ; NO, TRY IT.
  57. FINSH2:    LD     DE,ERMS18    ; SAY WE COULDN'T DO IT.
  58.     CALL   PRTSTR
  59.     JP     KERMIT        ; GO HOME.
  60. FINSH3:    INC    A        ; INCREMENT THE NUMBER OF TRIES.
  61.     LD     (NUMTRY),A
  62.     XOR    A
  63.     LD     (ARGBLK),A    ; MAKE IT PACKET NUMBER ZERO.
  64.     LD     A,1
  65.     LD     (ARGBLK+1),A    ; ONE PIECE OF DATA.
  66.     LD     HL,DATA
  67.     LD     (HL),'F'    ; FINISH RUNNING KERMIT.
  68.     LD     A,'G'        ; GENERIC COMMAND PACKET.
  69.     CALL   SPACK
  70.     JP    FINSH1
  71.     CALL   RPACK         ;GET AN ACKNOWLEDGEMENT.
  72.     JP    FINSH1
  73.     CP     'Y'        ; ACK?
  74.     JP     Z,KERMIT        ; YES, WE ARE DONE.
  75.     CP     'E'        ; IS IT AN ERROR PACKET?
  76.     JP     NZ,FINSH1    ; TRY SENDING THE PACKET AGAIN.
  77.     CALL   ERROR1        ; PRINT THE ERROR MESSAGE.
  78.     JP     KERMIT
  79. ; THIS IS THE LOGOUT COMMAND.  IT TELLS THE REMOTE KERSRV TO LOGOUT.
  80. LOGOUT:    LD     A,CMCFM
  81.     CALL   COMND        ; GET A CONFIRM.
  82.     JP    KERMT3
  83.     CALL   LOGO        ; SEND THE LOGOUT PACKET.
  84.     JP     KERMIT        ; GO GET ANOTHER COMMAND
  85.     JP     KERMIT        ;  WHETHER WE SUCCEED OR NOT.
  86. LOGO:    XOR    A
  87.     LD     (NUMTRY),A    ; INITITIALIZE COUNT.
  88.     LD     A,'1'        ; RESET BLOCK CHECK TYPE TO SINGLE CHARACTER
  89.     LD     (CURCHK),A    ;  .  .  .
  90. LOGO1:    LD     A,(NUMTRY)    ; HOW MANY TIMES HAVE WE TRIED?
  91.     CP     MAXTRY        ; TOO MANY TIMES?
  92.     JP     M,LOGO3        ; NO, TRY IT.
  93. LOGO2:    LD     DE,ERMS19    ; SAY WE COULDN'T DO IT.
  94.     CALL   PRTSTR
  95.     RET                ; FINISHED.
  96. LOGO3:    INC    A        ; INCREMENT THE NUMBER OF TRIES.
  97.     LD     (NUMTRY),A
  98.     XOR    A
  99.     LD     (ARGBLK),A    ; MAKE IT PACKET NUMBER ZERO.
  100.     LD     A,1
  101.     LD     (ARGBLK+1),A    ; ONE PIECE OF DATA.
  102.     LD     HL,DATA
  103.     LD     (HL),'L'        ; LOGOUT THE REMOTE HOST.
  104.     LD     A,'G'        ; GENERIC COMMAND PACKET.
  105.     CALL   SPACK
  106.     JP    LOGO2
  107.     CALL   RPACK        ; GET AN ACKNOWLEDGEMENT
  108.     JP    LOGO1
  109.     CP     'Y'        ; ACK?
  110.     JP     Z,RSKP        ; YES, WE ARE DONE.
  111.     CP     'E'        ; IS IT AN ERROR PACKET?
  112.     JP     NZ,LOGO1        ; TRY SENDING THE PACKET AGAIN.
  113.     CALL   ERROR1        ; PRINT THE ERROR MESSAGE.
  114.     RET                ; ALL DONE.
  115. ; THIS IS THE BYE COMMAND.  IT TELLS THE REMOTE KERSRV TO LOGOUT AND EXITS.
  116. BYE:    LD     A,CMCFM
  117.     CALL   COMND    ; GET A CONFIRM.
  118.     JP    KERMT3
  119.     CALL   LOGO    ; TELL THE MAIN FRAME TO LOGOUT.
  120.     JP     KERMIT    ; IF IT FAILS, DON'T EXIT.
  121.     JP     EXIT1    ; EXIT KERMIT.
  122. ; THIS IS THE LOG COMMAND.  IT LOGS A SESSION TO A FILE.
  123. LOG:    LD     A,CMOFI    ; PARSE AN INPUT FILE SPEC.
  124.     LD     DE,LFCB
  125.     CALL   COMND
  126.     JP    KERMT3
  127.     LD     A,CMCFM        ; PARSE A CONFIRM.
  128.     CALL   COMND
  129.     JP    KERMT3
  130.     LD     HL,LOGFLG
  131.     LD     (HL),0FFH    ; SET THE LOG FLAG.
  132.     LD     HL,LBUFF
  133.     LD     (BUFPNT),HL
  134.     LD    DE,LFCB
  135.     CALL    @OPEN
  136.     JR    NZ,LOG1A
  137.     LD     DE,LFCB
  138.     CALL    @KILL
  139.     LD     DE,LFCB
  140.     LD    HL,(BUFPNT)
  141. LOG1A:    CALL    @INIT
  142.     JP     NZ,KERMIT    ;[UTK3]
  143.     CALL    ERRORD
  144.     JP     KERMIT
  145. ;this is the connect command
  146. TELNET:    LD    A,CMCFM
  147.     CALL    COMND
  148.     JP    KERMT3
  149.     LD    DE,INFMS7
  150.     CALL    PRTSTR
  151.     CALL    ESCPR
  152.     LD    DE,INFMS8
  153.     CALL    PRTSTR
  154. CHRLUP    CALL    PRTCHR
  155.     CALL    CONCHR
  156.     JP    KERMIT
  157.     JP    CHRLUP
  158. PRTCHR    IN    A,(MNPRTS)
  159.     AND    INPUT
  160.     RET    Z
  161. PRTCH2    IN    A,(MNPORT)
  162.     AND    7FH
  163.     CP    LF
  164.     JR    Z,PRTCHR
  165.     LD    E,A
  166.     LD    A,(VTFLG)
  167.     OR    A
  168.     JR    Z,PRTCH1
  169.     LD    A,(ESCFLG)
  170.     OR    A
  171.     JP    NZ,VT52
  172.     LD    A,E
  173.     CP    DEL
  174.     RET    Z
  175.     CP    ESC
  176.     JR    NZ,PRTCH1
  177.     LD    (ESCFLG),A
  178.     JP    PRTCHR
  179. PRTCH1    CP    FF
  180.     JP    Z,CMBLNK
  181.     LD    A,(LOGFLG)
  182.     OR    A
  183.     CALL    NZ,LOGIT
  184.     LD    A,(PRTFLG)
  185.     OR    A
  186.     CALL    NZ,PRTIT
  187.     LD    A,E
  188.     CALL    CONOUT
  189.     JP    PRTCHR
  190. CONCHR    CALL    CONIN
  191.     AND    7FH
  192.     OR    A
  193.     JP    Z,RSKP
  194.     LD    E,A
  195.     LD    A,(ESCCHR)
  196.     CP    E
  197.     JP    Z,INTCHR
  198.     LD    A,E
  199.     CALL    SETPAR
  200.     LD    E,A
  201.     PUSH    DE
  202.     CALL     PRTOUT
  203.     POP    DE
  204.     LD    A,(ECOFLG)
  205.     OR    A
  206.     JP    Z,RSKP
  207.     LD    A,E
  208.     AND     7FH
  209.     CALL    CONOUT
  210.     JP    RSKP
  211. INTCHR    CALL    ESCPR
  212. INTCH0    CALL    CONIN
  213.     OR    A
  214.     JR    Z,INTCH0
  215.     LD    B,A
  216.     CALL    CONOUT
  217.     LD    A,B
  218.     CP    CTRLC        ;control-c?
  219.     JR    Z,CONTC        ;yes
  220.     AND    137O
  221.     CP    'C'        ;is it close?
  222.     JP    NZ,INTCHR0    ;no
  223. CONTC    LD    DE,INFMS9
  224.     CALL    PRTSTR
  225.     LD    A,(LOGFLG)    ;is log file on?
  226.     OR    A
  227.     RET     Z        ;no
  228.     XOR    A
  229.     LD    (LOGFLG),A    ;turn it off
  230.     LD    DE,INFMS6
  231.     CALL    PRTSTR
  232.     LD    DE,LFCB
  233.     CALL    @CLOSE
  234.     RET
  235. INTCHR0    CP    'S'        ;status?
  236.     JR    NZ,INCH01
  237.     CALL    STAT01        ;print out status
  238.     JP    RSKP
  239. INCH01    LD    A,B
  240.     CP    '?'
  241.     JR    NZ,INTCH1
  242.     LD    DE,INTHLP
  243.     CALL    PRTSTR
  244.     JP    INTCH0
  245. INTCH1    LD    A,B
  246.     AND    7FH
  247.     CP    'B'
  248.     JR    NZ,INTCH2
  249.     LD    DE,INMS12
  250.     CALL    PRTSTR
  251.     JP    RSKP
  252. INTCH2    LD    A,B
  253.     CP    '0'
  254.     JR    NZ,INTCH3
  255.     LD    A,0
  256.     CALL    OUTCHR
  257.     JP    RSKP
  258. INTCH3    LD    E,A
  259.     LD    A,(ESCCHR)
  260.     CP    E
  261.     JR    Z,INTCHZ
  262.     LD    A,E
  263.     CALL    SETPAR
  264.     CALL    PRTOUT
  265.     JP    RSKP
  266. INTCHZ    LD    A,BELL
  267.     CALL    CONOUT
  268.     JP RSKP
  269. VT52    XOR    A
  270.     LD    (ESCFLG),A
  271.     LD    A,E
  272.     CP    'A'
  273.     RET    M
  274.     CP    'K'+1
  275.     RET    P
  276.     SUB    'A'
  277.     RLCA
  278.     RLCA
  279.     LD    HL,TA
  280.     LD    E,A
  281.     LD    D,0
  282.     ADD    HL,DE
  283.     EX    DE,HL
  284.     CALL    PRTSTR
  285.     RET
  286. LOGIT    LD    A,E
  287.     LD    HL,(LOGPTR)
  288.     LD    (HL),A
  289.     INC    HL
  290.     LD    (LOGPTR),HL
  291.     PUSH    HL
  292.     POP    BC
  293.     LD    HL,LBUFF+257
  294.     OR    A
  295.     SBC    HL,BC
  296.     RET    NZ        ;not full yet
  297.     PUSH    DE
  298.     LD    A,XOFF        ;stop data flow
  299.     CALL    OUTCHR        ;send it out
  300.     LD    DE,LFCB
  301.     CALL    @VER        ;write out the buffer
  302.     JR    Z,LOGIT2
  303.     LD    DE,ERMS11
  304.     CALL    PRTSTR
  305. LOGIT2    LD    HL,LBUFF
  306.     LD    (LOGPTR),HL
  307.     LD    A,XON
  308.     CALL    OUTCHR        ;start data flow
  309.     POP    DE
  310.     RET
  311. PRTIT    LD    A,(37E8H)    ;get printer status
  312.     AND     0F0H
  313.     CP    30H
  314.     RET    NZ        ;skip this one
  315.     LD    A,E
  316.     PUSH    DE
  317.     CALL    @PRT        ;dos printer routine
  318.     POP    DE
  319.     RET
  320. PRTOUT    OR    A
  321.     RET    Z
  322.     LD    E,A
  323.     CALL    OUTCHR
  324.     RET
  325. ; THIS IS THE SET COMMAND.
  326. SETCOM:    LD     DE,SETTAB    ; PARSE A KEYWORD FROM THE SET TABLE.
  327.     LD     HL,SETHLP
  328.     LD     A,CMKEY
  329.     CALL   COMND
  330.     JP     KERMT2
  331.     LD     HL,SETJTB    ; GET THE ADDRESS OF THE JUMP TABLE.
  332.     LD     C,A
  333.     LD     B,0
  334.     ADD    HL,BC
  335.     JP   (HL)
  336. SETJTB:    JP     ESCAPE    ; 00H SET ESC
  337.     JP     IBMSET    ; 03H SET IBM
  338.     JP     LOCAL    ; 06H SET LOCAL
  339.     JP     KERMT3    ; 09H SET RECEIVE (NOT CURRENTLY USED)
  340.     JP     SETSND    ; 0CH SET SEND (NOT CURRENTLY USED)
  341.     JP     FILWAR    ; 0FH SET WARNING
  342.     JP     SETCPM    ; 12H SET FILE-MODE
  343.     JP     PARSET    ; 15H SET PARITY
  344.     JP     BLKSET    ; 18H SET BLOCK-CHECK-TYPE
  345.     JP     VT52EM    ; 1BH SET VT52
  346.     JP     PRTSET    ; 1EH SET PORT
  347.     JP     BAUD    ; 21H SET BAUD
  348.     JP     PRINTR    ; 24H    set printer
  349.     JP    SETBUG    ; 27H SET DEBUG
  350. BLKSET:    LD     DE,BLKTAB    ; GET THE ADDRESS OF THE BLOCK-CHECK TABLE
  351.     LD     HL,BLKHLP    ; AND THE ADDRESS OF THE HELP TEXT
  352.     LD     A,CMKEY    ; PARSE A KEYWORD
  353.     CALL   COMND    ; GO GET IT
  354.     JP     KERMT2    ; COULDN'T, COMPLAIN
  355.     LD     (TEMP1),A    ; SAVE THE PARSED ITEM
  356.     LD     A,CMCFM    ; WANT TO END THE COMMAND
  357.     CALL   COMND    ; GO DO IT
  358.     JP     KERMT2    ; GIVE UP
  359.     LD     A,(TEMP1)    ; GET THE VALUE BACK
  360.     LD     (CHKTYP),A    ; SAVE DESIRED CHECKSUM TYPE
  361.     JP     KERMIT    ; GO GET ANOTHER COMMAND
  362. ; SET DEFAULT DISK COMMAND
  363. ;SETDISK:    JP    KERMT3        ;not used on trs80
  364. ;SETDI1:    LD     A,(FCB)
  365. ;    cp    0
  366. ;    JP     NZ,SETDI2    ; HE TYPED A DRIVE-SPEC
  367. ;    LD     A,(CURDSK)    ; HE DIDN'T - GIVE HIM DEFAULT
  368. ;SETDI2:    LD     (CURDSK),A
  369. ;    JP     KERMIT    ; ALL DONE
  370. ; SET SEND COMMAND.
  371. SETSND:    LD     DE,STSNTB    ; PARSE A KEYWORD FROM THE SET SEND TABLE.
  372.     LD     HL,STSHLP
  373.     LD     A,CMKEY
  374.     CALL   COMND
  375.     JP     KERMT2
  376.     LD     HL,STSJTB    ; GET THE ADDRESS OF THE JUMP TABLE.
  377.     LD     C,A
  378.     LD     B,0
  379.     ADD    HL,BC
  380.     JP   (HL)
  381. STSJTB:    JP     STPDCH
  382.     JP     STPAD
  383. STPAD:    LD     A,CMCFM
  384.     CALL   COMND    ; GET A CONFIRM.
  385.     JP     KERMT3    ;  DIDN'T GET A CONFIRM.
  386.     JP     KERMIT
  387. STPDCH:    LD     A,CMCFM
  388.     CALL   COMND    ; GET A CONFIRM.
  389.     JP     KERMT3    ;  DIDN'T GET A CONFIRM.
  390.     JP     KERMIT
  391. ;THIS IS THE SET SPEED COMMAND
  392. BAUD:    LD     DE,SPDTAB
  393.     LD     HL,SPDHLP
  394.     CALL    ONOFFA
  395.     LD     (SPEED),A    ; SET THE SPEED.
  396.     CALL    MDMRST        ;set the speed
  397.     JP     KERMIT
  398. ;    THIS IS THE ESCAPE CHARACTER SET SUBCOMMAND.
  399. ESCAPE:    LD     A,CMCFM; NOT (BRAIN OR OSBRN1 OR KPII)
  400.     CALL   COMND    ; GET A CONFIRM.
  401.     JP     KERMT3    ;  DIDN'T GET A CONFIRM.
  402.     LD     DE,ESCMES    ; GET THE ADDRESS OF THE ESCAPE MESSAGE.
  403.     CALL   PRTSTR
  404.     CALL    @KEY
  405.     CALL    CONOUT
  406.     LD     (ESCCHR),A    ; STORE THE NEW ESCAPE CHARACTER.
  407.     JP     KERMIT
  408. ;    THIS IS THE LOCAL ECHO SET SUBCOMMAND.
  409. LOCAL:    CALL    ONOFF
  410.     LD     A,(TEMP1)    ; GET THE PARSED VALUE.
  411.     LD     (ECOFLG),A    ; SET THE LOCAL ECHO FLAG.
  412.     JP     KERMIT
  413. ;    THIS IS THE VT52 EMULATION SET SUBCOMMAND.
  414. VT52EM:    CALL    ONOFF
  415.     LD     (VTFLG),A    ; SET THE VT52 EMULATION FLAG.
  416.     JP     KERMIT
  417. ; THIS IS THE FILE-WARNING SET SUBCOMMAND
  418. FILWAR:    CALL    ONOFF
  419.     LD     (FLWFLG),A    ; SET THE FILE-WARNING FLAG.
  420.     JP     KERMIT
  421. ;    THIS IS THE SET IBM COMMAND.
  422. IBMSET:    CALL    ONOFF
  423.     LD     (IBMFLG),A    ; SET THE IBM FLAG.
  424.     OR     A        ; IS IT TURNED ON?
  425.     JR     Z,IBMST1    ; IF NOT, SET PARITY TO THE DEFAULT.
  426.     LD     A,IBMPAR    ; GET THE IBM PARITY.
  427.     LD     B,1        ; SET LOCAL ECHO ON.
  428.     JR     IBMST2
  429. IBMST1:    LD     A,DEFPAR
  430.     LD     B,0        ; SET LOCAL ECHO OFF.
  431. IBMST2:    LD     (PARITY),A    ; SAVE THEM.
  432.     LD     A,B
  433.     LD     (ECOFLG),A
  434.     JP     KERMIT
  435. ;    THIS IS THE SET PORT COMMAND.
  436. PRTSET:    LD     DE,PRTTAB    ; GET THE TABLE ADDRESS
  437.     LD     HL,PRTHLP    ; AND THE ADDRESS OF THE HELP TEXT
  438.     LD     A,CMKEY    ; WANT A KEYWORD
  439.     CALL   COMND    ; GET THE FIELD OF THE COMMAND
  440.     JP     KERMT2    ; NOT VALID, GIVE ERROR
  441.     LD     (TEMP1),A    ; SAVE THE PARSED VALUE.
  442.     LD     A,D        ; GET THE FUNCTION TO USE
  443.     LD     (TEMP2),A    ; SAVE FOR LATER
  444.     LD     A,CMCFM    ; MAKE SURE COMMAND IS FINISHED
  445.     CALL   COMND    ; GET A CONFIRM.
  446.     JP     KERMT3    ;  DIDN'T GET A CONFIRM.
  447.     LD     HL,(TEMP1)    ; GET THE TABLE POINTER
  448.     LD     A,(HL)        ; GET THE I/O port
  449.     LD     (PORT),A        ;save as current
  450.     JP     KERMIT
  451. ; TABLE ENTRIES ARE:
  452. ;    DB    port,port
  453. ;
  454. ;    SET FILE-MODE COMMAND.
  455. SETCPM:    LD     DE,TYPTAB
  456.     LD     HL,TYPHLP
  457.     CALL    ONOFFA
  458.     LD    (CPMFLG),A    ;SET THE CPM FLAG
  459.     JP     KERMIT
  460. ;    Set Printer command
  461. PRINTR:    CALL    ONOFF
  462.     LD    (PRTFLG),A
  463.     JP    KERMIT
  464. PARSET:    LD     DE,PARTAB
  465.     LD     HL,PARHLP
  466.     CALL    ONOFFA
  467.     LD     (PARITY),A    ; SET THE CPM FLAG.
  468.     JP     KERMIT
  469. ;SET DEBUG
  470. SETBUG:    CALL    ONOFF
  471.     LD    (DBFLG),A
  472.     JP    KERMIT
  473. ONOFF:    LD    DE,ONTAB
  474.     LD    HL,ONHLP
  475. ONOFFA:    LD    A,CMKEY
  476.     CALL    COMND
  477.     JP    ONOFF2
  478.     LD    (TEMP1),A
  479.     LD    A,CMCFM
  480.     CALL    COMND
  481.     JP    ONOFF3
  482.     LD    A,(TEMP1)
  483.     RET
  484. ONOFF2:    POP    AF
  485.     JP    KERMT2
  486. ONOFF3:    POP    AF
  487.     JP    KERMT3
  488. ; THIS IS THE SHOW COMMAND.
  489. SHOW:    LD     A,CMCFM
  490. ;* RECONCILE THIS AND STATUS.
  491.     CALL   STAT01    ; FOR NOW JUST COP OUT.
  492.     JP     KERMIT
  493. ;    THIS IS THE STATUS COMMAND.
  494. STATUS:    CALL   STAT01
  495.     JP     KERMIT
  496. STAT01:    LD     DE,LOCST    ; GET THE ADDRESS OF THE LOCAL ECHO STRING.
  497.     CALL   PRTSTR
  498.     LD    DE,OFFSTR
  499.     LD     A,(ECOFLG)    ; GET THE LOCAL ECHO FLAG.
  500.     OR     A        ; IS IT ON?
  501.     JR     Z,STAT03    ; IF NOT SAY SO.
  502.     LD     DE,ONSTR    ; SAY ON.
  503. STAT03:    CALL   PRTSTR
  504.     LD     DE,VTEMST    ; GET THE ADDRESS OF THE VT52 EMULATION STRING.
  505.     CALL   PRTSTR
  506.     LD    DE,OFFSTR
  507.     LD     A,(VTFLG)    ; GET THE VT52 EMULATION FLAG.
  508.     OR     A        ; IS IT ON?
  509.     JR     Z,STAT11    ; IF NOT SAY SO.
  510.     LD     DE,ONSTR    ; SAY ON.
  511. STAT11:    CALL   PRTSTR
  512.     LD     DE,CPMST    ; GET THE ADDRESS OF THE CPM CREATED FILE.
  513.     CALL   PRTSTR
  514.     LD    A,(CPMFLG)
  515.     OR     A        ; IS IT ON?
  516.     JR     Z,STAT2    ; IF NOT SAY SO.
  517.     CP     1    ; ASCII?
  518.     LD     DE,ASCSTR;
  519.     JR     Z,STAT21    ; SAY ASCII
  520.     LD     DE,BINSTR; SAY BINARY
  521.     JR     STAT21
  522. STAT2:    LD     DE,DEFSTR    ; SAY DEFAULT.
  523. STAT21:    CALL   PRTSTR
  524.     LD     DE,IBMST    ; IBM STRING.
  525.     CALL   PRTSTR
  526.     LD    DE,OFFSTR
  527.     LD     A,(IBMFLG)    ; IBM FLAG.
  528.     OR     A        ; IS IT ON?
  529.     JR     Z,STAT3    ; IF NOT SAY SO.
  530.     LD     DE,ONSTR    ; SAY ON.
  531. STAT3:    CALL   PRTSTR
  532.     LD     DE,FILST    ; FILE WARNING STRING.
  533.     CALL   PRTSTR
  534.     LD    DE,OFFSTR
  535.     LD     A,(FLWFLG)    ; FILE WARNING FLAG.
  536.     OR     A        ; IS IT ON?
  537.     JR     Z,STAT4    ; IF NOT SAY SO.
  538.     LD     DE,ONSTR    ; SAY ON.
  539. STAT4:    CALL   PRTSTR
  540.     LD    DE,BUGST    ;debug string
  541.     CALL    PRTSTR
  542.     LD    DE,OFFSTR
  543.     LD    A,(DBFLG)
  544.     OR    A
  545.     JR    Z,STAT4A
  546.     LD    DE,ONSTR
  547. STAT4A:    CALL    PRTSTR
  548.     LD     DE,PARST    ; PARITY STRING.
  549.     LD    DE,PNTSTR    ;printer string
  550.     CALL    PRTSTR
  551.     LD    DE,OFFSTR
  552.     LD    A,(PRTFLG)    ;get printer flag
  553.     OR    A
  554.     JR    Z,STAT4D
  555.     LD    DE,ONSTR
  556. STAT4D:    CALL    PRTSTR
  557.     LD    DE,PARST
  558.     CALL   PRTSTR
  559.     LD     A,(PARITY)    ; GET THE PARITY SETTING.
  560.     LD     DE,PNONST    ; NONE BY DEFAULT.
  561.     CP     PARMRK    ; IS IT MARK?
  562.     JR     NZ,STAT5    ; IF NOT SAY SO.
  563.     LD     DE,PMRKST    ; SAY MARK.
  564.     JR     STAT55
  565. STAT5:    CP     PARSPC    ; IS IT SPACE?
  566.     JR     NZ,STAT51    ; IF NOT SAY SO.
  567.     LD     DE,PSPCST    ; SAY SPACE.
  568.     JR     STAT55
  569. STAT51:    CP     PARODD    ; IS IT ODD?
  570.     JR     NZ,STAT52    ; IF NOT SAY SO.
  571.     LD     DE,PODDST    ; SAY ODD.
  572.     JR     STAT55
  573. STAT52:    CP     PAREVN    ; IS IT EVEN?
  574.     JR     NZ,STAT55    ; IF NOT SAY SO.
  575.     LD     DE,PEVNST    ; SAY EVEN.
  576. STAT55:    CALL   PRTSTR
  577. ; PRINT OUT CURRENT BLOCK-CHECK-TYPE
  578.     LD     DE,BCKST    ; GET THE STRING
  579.     CALL   PRTSTR    ; PRINT "BLOCK CHECK TYPE: "
  580.     LD     A,(CHKTYP)    ; GET THE TYPE (CHARACTER 1, 2, OR 3)
  581.     CALL    CONOUT
  582.     LD     DE,BCKST1; GET REST OF TEXT ("-CHARACTER")
  583.     CALL   PRTSTR    ;  .  .  .
  584. ; PRINT THE CURRENT ESCAPE CHARACTER
  585.     LD     DE,ESCST    ; ESCAPE STRING.
  586.     CALL   PRTSTR
  587.     CALL   ESCPR    ; PRINT THE ESCAPE CHAR.
  588.     LD     DE,CRLF    ; GET THE ADDRESS OF A CRLF.
  589.     CALL   PRTSTR
  590. ; print current baud rate
  591.     LD    DE,SPEDST    ;line speed
  592.     CALL    PRTSTR
  593.     LD    A,(SPEED)
  594.     SUB     11H        ;decement baud bit
  595.     LD    HL,SPDTAB    ;baud speed table
  596.     LD    BC,CMSTAT-SPDTAB
  597.     CPIR            ;block compare
  598.     INC    HL
  599.     INC    HL
  600.     EX    DE,HL
  601.     CALL     PRTSTR        ;print baud rate
  602.     LD    DE,BAUST    ;' baud'
  603.     CALL    PRTSTR
  604.     RET
  605.