home *** CD-ROM | disk | FTP | other *** search
- ; Kermit server command script file
- ; ---------------------------------
- ; Commenced: 6/8/88 R.McG
- ;
- ; First - open a window
- ;
- ON ESCAPE GOSUB Exit ; Exit if esc pressed
- Restart:
- GOSUB Window ; Open window and ask for command
- ;
- ; S0 returns the response: Interpret the response
- ;
- SWITCH S0
- CASE "1"
- GOTO Send
- ENDCASE
- CASE "2"
- GOTO Receive
- ENDCASE
- CASE "3"
- GOTO Finish
- ENDCASE
- CASE "4"
- GOTO Logout
- ENDCASE
- CASE "S"
- GOTO Send
- ENDCASE
- CASE "R"
- GOTO Receive
- ENDCASE
- CASE "F"
- GOTO Finish
- ENDCASE
- CASE "L"
- GOTO Logout
- ENDCASE
- ENDSWITCH
- ;
- ; Unrecognized entry
- ;
- SOUND 100 500
- GOTO Restart
- ;
- ; Exit routine
- ;
- Exit:
- RESTORE ; CLose the window we opened in subroutine Window
- EXIT
- ;
- ; Command subroutine - build and send a KERMIT packet
- ; .. The body of the packet is in S0
- ;
- Command:
- N0 = 1 ; Set MARK value (SOH)
- LENGTH S0 N2 ; Compute length of type&data
- N3 = N2+2+32 ; Account for blknum and checksum, and make an ASCII
-
- ITOC N0 S1(0) ; Set MARK into string
- ITOC N3 S1(1) ; Set length into string
- S1(2) = " " ; Set block number
- S1(3:79) = S0 ; Store type and data
- ;
- ; Now, compute the checksum
- ;
- N4 = 1 ; Start at length variable
- N5 = N2+2 ; Make a loop count
- N6 = 0 ; Initialize summation
- Loop:
- CTOI S1(N4:N4) N7
- N6 = N6+N7 ; Sum the value
-
- INC N4 ; Point to next
- DEC N5 ; Decrement count to go
-
- IF NOT ZERO N5 ; Loop for count in
- GOTO Loop ; .. N5
- ENDIF
-
- N6 = N6-(N6/256)*256 ; Reduce to 8 bits
- N7 = N6/64 ; Extract top 2 bits
- N6 = N6+N7 ; Sum MSBits with low 6 bits
- N6 = N6-(N6/64)*64 ; And reduce result to 6 bits
- N6 = N6+32 ; Make printable ascii
- ;
- ; Store the CHECKSUM, and transmit the whole
- ;
- N2 = N2+3 ; COmpute index to checksum
- ITOC N6 S1(n2:n2)
- INC N2 ; Point after checksum
- S1(N2) = "!" ; Store a c/r
- TRANS S1 ; And send it
- RETURN ; And we're done
- ;
- ; Build and send a logout and we're done
- ;
- Logout:
- S0 = "GL"
- GOSUB Command
- GOTO Exit
- ;
- ; Build and send a finish and we're done
- ;
- Finish:
- S0 = "GF"
- GOSUB Command
- GOTO Exit
- ;
- ; Initiate a KERMIT send operation
- ;
- Send:
- SOUND 400 200
- ATSAY 17 12 (Default) "File name: "
- ATGET 17 27 (Default) 40 S1
-
- IF NOT ISFILE S1
- SOUND 100 500
- ATSAY 17 27 (Default) "File does not exist... please re-enter. "
- PAUSE 5
- GOTO Send
- ENDIF
- SENDFILE KERMIT S1
- GOTO Exit
- ;
- ; Initiate a KERMIT receive operation
- ;
- Receive:
- SOUND 400 200
- ATSAY 17 12 (Default) "File name: "
- ATGET 17 27 (Default) 40 S1
-
- S0 = "R"&S1
- GOSUB Command
- GETFILE KERMIT
- GOTO Exit
- ;
- ; Open a window and read a command
- ;
- Window:
- SAVE 10 10 18 70
- BOX 10 10 18 70 (Default)
- ATSAY 10 12 (Default) " COM-AND Kermit Server "
- ATSAY 11 12 (Default) "(1) Send (request host to receive file(s))"
- ATSAY 12 12 (Default) "(2) Receive (request host to send file(s))"
- ATSAY 13 12 (Default) "(3) Finish (terminate host KERMIT server)"
- ATSAY 14 12 (Default) "(4) LogOut (terminate host server and logoff)"
-
- ATSAY 16 12 (Default) "Enter command: "
- ATGET 16 27 (Default) 2 s0
- UPPER S0 ; Make it upper case
- Return