Vidicode Argus Basic Programmers Reference Manual
Have a look at the manual Vidicode Argus Basic Programmers Reference Manual online for free. It’s possible to download the document as PDF or print. UserManuals.tech offer 9 Vidicode manuals and user’s guides for free. Share the user manual or guide on Facebook, Twitter or Google+.
ARGUS Programmable Modem BASIC Programmers Reference Manual © 1990 - 1997 Vidicode Datacommunicatie BV 168 POKE put byte into memory POKE is used to write single bytes of data into memory, and is most commonly used to pass values to and from machine code routines, or to save information which can be retrieved later with the PEEK command. Two parameters are required, which specify the address and the value to be stored. Examples: POKE Address, Byte POKE &4000+Pointer, GET POKE &7000, B Syntax: POKE [integer], [integer 0..255) See also: PEEK, PEEK$, POKE$
ARGUS Programmable Modem BASIC Programmers Reference Manual © 1990 - 1997 Vidicode Datacommunicatie BV 169 POKE$ put string into memory POKE$ is used to write strings into memory which can be retrieved later using PEEK$. Two parameters are required which specify the start address and the string to be stored. Each character in the string is stored in the next sequential memory location from the specified start address. A Carriage Return is automatically appended to denote the end of the string. As an example of the use of POKE$, the following program stores lines of text one after the other in memory: 20 DIM Address 500 : Pointer=0 30 REPEAT 40 INPUT Line$ 50 POKE$ Address+Pointer, Line$ 60 Pointer=Pointer+LEN(Line$)+1 70 UNTIL Pointer=5 This is more efficient than using string arrays because each string takes up the minimum amount of memory possible. Text stored in this way could be retrieved with the following program: 10 DIM Address 500 : Pointer=0 20 REPEAT 30 Line$=PEEK$(Address+Pointer) 40 PRINT Line$ 50 Pointer=Pointer+LEN(Line$)+1 60 UNTIL Pointer=5 Refer to POKE for a description of access to User memory with POKE$. Examples: POKE$ Address,String$ POKE$ &A000+I,X$ Syntax: POKE$ [integer] , [string] See also: PEEK, PEEK$, POKE
ARGUS Programmable Modem BASIC Programmers Reference Manual © 1990 - 1997 Vidicode Datacommunicatie BV 170 PORT last event PORT is used to read the port number on which the last event happened. PORT is thus associated with the ON ... event handlers. PORT can also be part of many command lines to indicate the port number (instead of #). Examples: IF PORT=3 THEN GOSUB Password-control PRINT PORT 2 Hello Syntax: [num-var] = PORT See also: ON BRK, ON DTD, ON DTR, ON ESCAPE, ON SEQUENCE
ARGUS Programmable Modem BASIC Programmers Reference Manual © 1990 - 1997 Vidicode Datacommunicatie BV 171 PRINT send data to port PRINT is used to output numbers and/or strings to the output ports. There are several major advantages over PUT and PUT$: a) PUT and PUT$ can only send a single value/character at a time. PRINT can send multiple characters or values. b) Any output formatting required must be carried out explicitly using PUT and PUT$, but PRINT provides a variety of formatting options. If no port number is specified, the default output port as defined by OPORT will be assumed. All printing from memory is buffered and interrupt driven; i.e. on execution of the PRINT command, the data to be printed is immediately copied to a buffer. Program control then returns to the command following PRINT, while the buffered data is output by a background interrupt routine. Care should be taken not to clear the output buffer before it has been fully emptied - in the next example, the buffer may be cleared before the complete text has been transmitted, and some data may be lost: 10 PRINT VIDICODE Datacommunications - ARGUS Programmable Modem 20 CLEAR OUTPUT PRINT positioning & formatting Various characters can be used within the PRINT command to alter the format of the output by inserting or suppressing Carriage Returns: ; a semi-colon following an item to be printed suppresses the automatic addition of [CR], and causes printing to commence immediately following the last printed value. , a comma following a value/string to be printed causes printing to commence at the start of the next horizontal field position. This is 8 characters away from the last horizontal field position or the start of the line. a single quote mark before or after a value/string to be printed causes the insertion of an additional [CR]. ~ a tilde causes numeric values to be printed in hexadecimal format. Command Characters sent PRINT X X[CR] PRINT X; X PRINT [CR][CR] PRINT X [CR]X[CR] PRINT 1 1[CR] PRINT -1234 -1234[CR] PRINT ~11 B[CR] PRINT ~-1 FFFF[CR] PRINT ;1; 1 PRINT ;~-1; FFFF PRINT X,1 X 1[CR] PRINT X1 X[CR] 1[CR] PRINT 1,1; 1 1
ARGUS Programmable Modem BASIC Programmers Reference Manual © 1990 - 1997 Vidicode Datacommunicatie BV 172 Examples: PRINT Message number : ;M_Nr; PRINT#1,#7,12+9*A(I) PRINT ~1000*R/P PRINT ;&100+PEEK(&2000) PRINT#1,DTR=;DTR#2,RTS=;RTS#2 PRINT E1$+E2$+CHR$7 Syntax: PRINT ( #[port] , ) (#...) ( [string] ) () (,) (;) (~) ( [integer] ) (;) See also: OUTPUT, PUT, PUT$
ARGUS Programmable Modem BASIC Programmers Reference Manual © 1990 - 1997 Vidicode Datacommunicatie BV 173 PRINTER enable/disable printer port PRINTER provides an alternative means of controlling the printer port. The parallel printer port is only available in an Argus Programmable Modem, not in a T.C.Lite. There are four forms of the command: PRINTER and PRINTER ON The PRINTER and PRINTER ON commands will enable the printer by adding 64 to the value of OPORT. PRINTER OFF This subtracts 64 from the value of OPORT, thereby disabling the printer. PRINTER LINEFEED ON/OFF This causes the modem to insert or suppress the insertion of a Linefeed character after every Carriage Return sent to the printer. PRINTER INPUT/OUTPUT This command is used to configure the parallel port for Input or Output. Examples: PRINTER PRINTER ON PRINTER LINEFEED OFF PRINTER INPUT Syntax: PRINTER ON|OFF PRINTER LINEFEED ON|OFF PRINTER OUTPUT See also: LINEFEED, OPORT
ARGUS Programmable Modem BASIC Programmers Reference Manual © 1990 - 1997 Vidicode Datacommunicatie BV 174 PROTOCOL set file transfer protocol Selecting between different protocols is done by the PROTOCOL command. Before sending or receiving using the SEND,X or RECEIVE,X commands you must set the right options with this command. PROTOCOL expects a number between 0 and 255. The bits in the number are organized as follows: bit0 =0/1= Use checksum/CRC-16 for error detection bit1 =0/1= Use 128/1024 bytes in a block (Xmodem-1K or Ymodem-1K bit2 =0/1= No/Yes batch option (Xmodem/Ymodem) bit3 =0/1= No/Yes stream option (Xmodem-g or Ymodem-g) bit4 =0/1= Yes/No end of transfer with batch bit5 =0/1= Use last number before first dot/last in name with Ymodem bit6 =0/1= Use real/info-block for filenames with Ymodem bit7 =0/1= No/Yes CTRL-Z (EOT) at end of file in last block with Xmodem Bit0: Checksum or CRC-16. Checksum is an old way to detect errors in a block. These days CRC-16 is always used. Some old systems, however, may still be using checksum. The modem will automatically detect that the other system is using checksum, when CRC-16 is selected. So, it is best that this bit is always high. Bit1: 128 or 1024 bytes Using 128 bytes in a block is normal for Xmodem and using 1024 bytes in a block is normal for Ymodem. When sending big files with Xmodem, then 1024 bytes can be useful. Sending in Ymodem over a bad line, then 128 bytes would be useful. Note: In order to be able to use 1024 bytes in a block, a buffer must be defined with the BUFFER command of at least 1K (&400) bytes. Otherwise, the error message No/Bad Buffer (ERN=92) is generated. When using MNP5 together with file transfer, a buffer of at least 4K (&1000) bytes must be defined. So, the command BUFFER &1000 is suitable for all situations. Bit2: Batch option With this you select between Xmodem or Ymodem. Xmodem only sends the contents of the file. Ymodem also sends the filename and file length. Bit3: Stream option With this bit you select the stream option, also known as Xmodem-g or Ymodem-g. This type of transfer can only be used over reliable lines, because there is no error recovery. The sending side keeps on sending and the receiving side keeps on receiving. When the receiver detects an error, it aborts the transfer immediately. It is the fastest way to transfer, because no ACKs and NAKs are sent, only data blocks. Bit4: End-of-transfer with batch. This bit only has effect when Ymodem-send is selected. When it is set, a SEND command will return without sending the end-of-transfer to remote. This means that a next SEND command (with Ymodem) can be entered. The last file must be sent with bit4 cleared. Example: PROTOCOL 7+16 SEND FILE1,X : 1st file SEND FILE2,X : 2nd file SEND FILE3,X : 3rd file
ARGUS Programmable Modem BASIC Programmers Reference Manual © 1990 - 1997 Vidicode Datacommunicatie BV 175 PROTOCOL 7 SEND FILE4,X : 4th and last file Bit5: Ymodem-receive file name counter. This bit only has an effect when Ymodem-receive is selected and when bit6 is 1. It determines how the filename is used when receiving multiple files with Ymodem. If bit5 is set, then the last number in the filename is incremented. If bit5 is cleared, then the last number before the first dot (if any), is incremented. Example: PROTOCOL 7+64 RECEIVE TEST0001.01.Y,X ^^^^ RECEIVE 1234-0001.01.Y,X ^^^^ RECEIVE 1234.01.Y,X ^^^^ or PROTOCOL 7+32+64 RECEIVE TEST0001.01.Y,X ^^ RECEIVE 1234-0001.01.Y,X ^^ RECEIVE 1234.01.Y,X ^^ or PROTOCOL 7+64 (or PROTOCOL 7+32+64) RECEIVE TEST001,X ^^^ RECEIVE TEST01-001,X ^^^ RECEIVE 1234,X ^^^^ RECEIVE TEST.01,X ^^ Bit6: Ymodem filename The modem can select between 2 modes, when using Ymodem. The first mode (bit6=0) uses real filenames, which is the normal way. Example: Computer sends file LETTER.TXT Modem receives file LETTER.TXT or Modem sends file LETTER.TXT Computer receives file LETTER.TXT Note: When receiving files with Ymodem in this way, a dummy filename must be used with the RECEIVE command (RECEIVE dummy,X). The second mode (bit6=1) is specially implemented for use inside the modem because some applications will need it. The outside world wont notice the difference when implemented correctly. Instead of using the real filename, the modem uses the Information Block (IB) for the received or sent filenames. First some explanation about IB. Each file in the internal filing system of the modem has 32 bytes of free space attached to that file (the IB). These bytes can be accessed or made visible with the following commands. SEND [name],B
ARGUS Programmable Modem BASIC Programmers Reference Manual © 1990 - 1997 Vidicode Datacommunicatie BV 176 RECEIVE [name],B DIR [name],B DIR [name],F Exchanging data between the IB and the file is done with PEEK and POKE on addresses &2BE0 til &2BFF. When the command SEND [name],B is given, the IB of that file is placed on &2BE0. When the command RECEIVE [name],B is given, the 32 bytes on &2BE0 are placed in the IB of that file. When a new file is created with RECEIVE, the contents of &2BE0 is used to fill the IB of that new file. The SEND and LOAD commands are also filling &2BE0 with their IB. The contents of the IB can be read with DIR [name},B. DIR [name],F will also show the contents, but only when there is a legal ASCII string in it, terminated with , ASCII 13. When receiving with Ymodem, the modem uses the filename given with the RECEIVE command. The real filename from the other side is stored in the IB. Before storing the name, the modem first looks for a on &2BE0 til &2BFF. If there is a at the start, the filename will be stored at the beginning of the IB. Also, when there is no found, the filename will be stored at the beginning. If it finds a after a string, the filename will be stored after this string and the will be replaced by a \. The filename used by the modem to store it, must contain an ASCII number. The number nearest to the dot (if any) is taken. This number is automatically incremented by the modem when more than 1 file is received. Examples: PROTOCOL 7+64 (or PROTOCOL 71) POKE &2BE0,13 RECEIVE FILE0001,X (3 files are received) DIR FILE*,F 1 0005 FILE0001 24-1 U : LETTER.TXT 2 0020 FILE0002 24-1 U : GAME.EXE 3 0009 FILE0003 24-1 U : MODEM.DOC POKE &2BE0,LETTERS RECEIVE LET08,X (4 files are received) DIR LET*,F 1 0005 LET08 24-1 U : LETTERS\ORDER.TXT 2 0030 LET09 24-1 U : LETTERS\ALWIN1.TXT 3 0009 LET10 24-1 U : LETTERS\ALWIN2.TXT 4 0009 LET11 24-1 U : LETTERS\HAWAI.TXT When sending, the modem gets the real filename from the IB and no ASCII number is incremented automatically. Examples: PROTOCOL 7+64 SEND FILE*,X SEND LET*,X Bit7: CTRL-Z (=EOT= End of Text)
ARGUS Programmable Modem BASIC Programmers Reference Manual © 1990 - 1997 Vidicode Datacommunicatie BV 177 If bit7=0 the file length will not be correct, since remaining bytes in the last block are filled with 0 bytes (=NUL). When bit7=1, first a CTRL-Z is placed at the end of the file, the rest is filled with 0. This is sometimes needed when sending text files. Syntax: PROTOCOL [integer 0-255]