Omron SYSMAC C200H-ASC02 Operation Manual

Page 1
Cat. No. W165-E1-04
SYSMAC
C200H-ASC02
ASCII Unit
Page 2
C200H-ASC02 ASCII Unit
Operation Manual
Page 3
iv
Page 4
!
!
!
v
Notice:
OMRON products are manufactured for use according to proper procedures by a qualified operator and only for the purposes described in this manual.
The following conventions are used to indicate and classify precautions in this manual. Always heed the information provided with them. Failure to heed precautions can result in injury to people or dam­age to property.
DANGER Indicates an imminently hazardous situation which, if not avoided, will result in death or
serious injury.
WARNING Indicates a potentially hazardous situation which, if not avoided, could result in death or
serious injury.
Caution Indicates a potentially hazardous situation which, if not avoided, may result in minor or
moderate injury, or property damage.
OMRON Product References
All OMRON products are capitalized in this manual. The word “Unit” is also capitalized when it refers to an OMRON product, regardless of whether or not it appears in the proper name of the product.
The abbreviation “Ch,” which appears in some displays and on some OMRON products, often means “word” and is abbreviated “Wd” in documentation in this sense.
The abbreviation “PC” means Programmable Controller and is not used as an abbreviation for any­thing else.
Visual Aids
The following headings appear in the left column of the manual to help you locate different types of information.
Note Indicates informa t i o n o f particular interest for efficient and convenient operation
of the product.
1, 2, 3... 1. Indicates lists of one sort or another, such as procedures, checklists, etc.
OMRON, 1989
All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form, or by any means, mechanical, electronic, photocopying, recording, or otherwise, without the prior written permis­sion of OMRON.
No patent liability is assumed with respect to the use of the information contained herein. Moreover, because OMRON is constantly striving to improve its high-quality products, the information contained in this manual is subject to change without notice. Every precaution has been taken in the preparation of this manual. Nevertheless, OMRON assumes no responsibility for errors or omissions. Neither is any liability assumed for damages resulting from the use of the informa­tion contained in this publication.
Page 5
vi
Page 6
TABLE OF CONTENTS
vii
PRECAUTIONS xi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 Intended Audience xii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 General Precautions xii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Safety Precautions xii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Operating Environment Precautions xii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Application Precautions xiii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SECTION 1
Hardware 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-1 Front Panel 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-2 Back Panel 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-3 System Configuration 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SECTION 2
Data Section 9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2-1 Bits and Bytes 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2-2 Data Section 11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SECTION 3
Programming and Communication 15. . . . . . . . . . . . . . . . .
3-1 Programs 16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-2 Program Transfer 17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-3 Running the BASIC Program 18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-4 Assembly Routines 18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SECTION 4
BASIC Language 19. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-1 Program Configuration 20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-2 BASIC Language 25. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SECTION 5
Assembly Programming 67. . . . . . . . . . . . . . . . . . . . . . . . . .
5-1 Assembly Language Programming 68. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5-2 Terminology and Formatting 69. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5-3 Monitor Mode Commands 69. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SECTION 6
Program Examples 79. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6-1 Example Programs 80. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6-2 Execution Sequence 94. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6-3 Assembly Language Example 102. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Appendices
A Standard Models 107. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B Specifications 109. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C PC Statements and Refresh Timing 117. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
D Formatting and Data Conversion 125. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
E ASCII Unit Memory Map 135. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
F Troubleshooting 141. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
G Reference Tables 145. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
H Programming with Windows 95 HyperTerminal 151. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
I Assembly Language Programming with a Terminal 155. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Page 7
TABLE OF CONTENTS
viii
Glossary 159. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Index 163. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Revision History 165. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Page 8
ix
About this Manual:
It has been assumed in the writing of this manual that the reader is already familiar with the hardware, programming, and terminology of OMRON PCs. If a review of this information is necessary, the read­er should refer to the appropriate OMRON PC manuals for assistance.
This manual is organized into six topic sections and six supplementary appendixes and was designed to be read from the beginning to the end in the presented sequence. It is important to fully study the current section before proceeding to the following section. However, because many of the concepts presented are interrelated, in some circumstances it will not be possible to fully understand a topic until the reader has read the whole manual. Therefore, it is recommended that the user read the man­ual through once for general understanding and then again to fill in the details. This manual also con­tains an index and a glossary of important terms. It is recommended that the reader become familiar with the terms in the glossary before attempting to read this manual.
Section 1 explains the details of the external hardware of the ASCII Unit and how it connects to a PC system.
Section 2 explains the format of the PC data section. The PC data section is an area in the PC memory where the ASCII Unit and the PC exchange data.
Section 3 explains how the ASCII Unit program and the PC Program communicate. It also explains how to write, load, save, and run an ASCII Unit BASIC program.
Section 4 presents the ASCII Unit BASIC programming language. Since many of the BASIC com­mands are nonstandard and particular to an ASCII Unit-PC system, it is recommended that even readers already proficient in BASIC pay careful attention to this section.
Section 5 explains the assembly language programming environment and how it relates to the ASCII Unit BASIC program. It also explains in detail how to write, edit, and run an assembly language pro­gram.
Section 6 presents programming examples that are meant to bring together all of the concepts pres­ented in this manual. most of the programs deal with data transfer and illustrate how the ASCII Unit and the PC work together in various applications. Also in this section are several examples used to illustrate the execution sequence of the hardware during execution of the ASCII Unit and PC pro­grams. Most of the detailed technical information not immediately necessary for the understanding of a particular section has been put into one of the six appendixes and should be used for reference when needed. For as list of the appendixes, refer to the table of contents.
Appendixes, a Glossary, and an Index are also included.
WARNING Failure to read and understand the information provided in this manual may result in
personal injury or death, damage to the product, or product failure. Please read each section in its entirety and be sure you understand the information provided in the section and related sections before attempting any of the procedures or operations given.
!
Page 9
xi
PRECAUTIONS
This section provides general precautions for using the C200H Temperature Sensor Unit and related devices.
The information contained in this section is important for the safe and reliable application of the C200H T emperature Sensor Unit. You must read this section and understand the information contained before attempting to set up or oper­ate the C200H Temperature Sensor Unit.
1 Intended Audience xii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 General Precautions xii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Safety Precautions xii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Operating Environment Precautions xii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Application Precautions xiii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Page 10
!
!
!
!
!
4Operating Environment Precautions
xii
1 Intended Audience
This manual is intended for the following personnel, who must also have knowl­edge of electrical systems (an electrical engineer or the equivalent).
Personnel in charge of installing FA systems.
Personnel in charge of designing FA systems.
Personnel in charge of managing FA systems and facilities.
2 General Precautions
The user must operate the product according to the performance specifications described in the relevant manuals.
Before using the product under conditions which are not described in the manual or applying the product to nuclear control systems, railroad systems, aviation systems, vehicles, combustion systems, medical equipment, amusement ma­chines, safety equipment, and other systems, machines, and equipment that may have a serious influence on lives and property if used improperly, consult your OMRON representative.
Make sure that the ratings and performance characteristics of the product are sufficient for the systems, machines, and equipment, and be sure to provide the systems, machines, and equipment with double safety mechanisms.
This manual provides information for programming and operating the Unit. Be sure to read this manual before attempting to use the Unit and keep this manual close at hand for reference during operation.
WARNING It is extremely important that a PC and all PC Units be used for the specified
purpose and under the specified conditions, especially in applications that can directly or indirectly affect human life. You must consult with your OMRON representative before applying a PC system to the above-mentioned applications.
3 Safety Precautions
WARNING Do not attempt to take any Unit apart while the power is being supplied. Doing so
may result in electric shock.
WARNING Do not touch any of the terminals or terminal blocks while the power is being
supplied. Doing so may result in electric shock.
WARNING Do not attempt to disassemble, repair, or modify any Units. Any attempt to do so
may result in malfunction, fire, or electric shock.
4 Operating Environment Precautions
Caution Do not operate the control system in the following locations:
Locations subject to direct sunlight.
Locations subject to temperatures or humidity outside the range specified in
the specifications.
Locations subje c t t o c o n d e n s a t i o n a s t h e result of severe changes in tempera­ture.
Page 11
!
!
!
!
5Application Precautions
xiii
Locations subject to corrosive or flammable gases.
Locations subject to dust (especially iron dust) or salts.
Locations subject to exposure to water, oil, or chemicals.
Locations subject to shock or vibration.
Caution Take appropriate and sufficient countermeasures when installing systems in the
following locations:
Locations subject to static electricity or other forms of noise.
Locations subject to strong electromagnetic fields.
Locations subject to possible exposure to radioactivity.
Locations close to power supplies.
Caution The operating environment of the PC system can have a large effect on the lon-
gevity and reliability of the system. Improper operating environments can lead to malfunction, failure, and other unforeseeable problems with the PC system. Be sure that th e operating environment is within the specified conditions at installa­tion and remains within the specified conditions during the life of the system.
5 Application Precautions
Observe the following precautions when using the PC system.
WARNING Always heed these precautions. Failure to abide by the following precautions
could lead to serious or possibly fatal injury.
Always ground the system to 100 or less when installing the Units. Not con­necting to a ground of 100 Ω or less may result in electric shock.
Always turn OFF the power supply to the PC before attempting any of the fol­lowing. Not turning OFF the power supply may result in malfunction or electric shock.
Mounting or dismounting I/O Units, CPU Units, Memory Units, or any other Units.
Assembling the Units.
Setting DIP switches or rotary switches.
Connecting cables or wiring the system.
Connecting or disconnecting the connectors.
Caution Failure to abide by the following precautions could lead to faulty operation of the
PC or the system, or could damage the PC or PC Units. Always heed these pre­cautions.
Fail-safe measures must be taken by the customer to ensure safety in the event of incorrect, missing, or abnormal signals caused by broken signal lines, momentary power interruptions, or other causes.
Always use the power supply voltages specified in this manual. An incorrect voltage may result in malfunction or burning.
Take appropriate measures to ensure that the specified power with the rated voltage and frequency is supplied. Be particularly careful in places where the power supply is unstable. An incorrect power supply may result in malfunction.
Install external breakers and take other safety measures against short-circuit­ing in external wiring. Insufficient safety measures against short-circuiting may result in burning.
Page 12
5Application Precautions
xiv
Do not apply voltages to the Input Units in excess of the rated input voltage. Excess voltages may result in burning.
Do not apply voltages or connect loads to the Output Units in excess of the maximum switching capacity. Excess voltage or loads may result in burning.
Disconnect the functional ground terminal when performing withstand voltage tests. Not disconnecting the functional ground terminal may result in burning.
Be sure that all the mounting screws, terminal screws, and cable connector screws are tightened to the torque specified in this manual. Incorrect tighten­ing torque may result in malfunction.
Leave the label attached to the Unit when wiring. Removing the label may re­sult in malfunction if foreign matter enters the Unit.
Remove the label after the completion of wiring to ensure proper heat dissipa­tion. Leaving the label attached may result in malfunction.
Double-check all wiring and switch settings before turning ON the power sup­ply. Incorrect wiring may result in burning.
Wire correctly. Incorrect wiring may result in burning.
Mount Units only after checking terminal blocks and connectors completely.
Be sure that the terminal blocks, Memory Units, expansion cables, and other
items with locking devices are properly locked into place. Improper locking may result in malfunction.
Check the user program for proper execution before actually running it on the Unit. Not checking the program may result in an unexpected operation.
Confirm that no adverse effect will occur in the system before attempting any of the following. Not doing so may result in an unexpected operation.
Changing the operating mode of the PC.
Force-setting/force-resetting any bit in memory.
Changing the present value of any word or any set value in memory.
Resume operation only after transferring to the new CPU Unit the contents of
the DM Area, HR Area, and other data required for resuming operation. Not doing so may result in an unexpected operation.
Do not pull on the cables or bend the cables beyond their natural limit. Doing either of these may break the cables.
Do not place objects on top of the cables or other wiring lines. Doing so may break the cables.
Use crimp terminals for wiring. Do not connect bare stranded wires directly to terminals. Connection of bare stranded wires may result in burning.
When replacing parts, be sure to confirm that the rating of a new part is correct. Not doing so may result in malfunction or burning.
Before touching a Unit, be sure to first touch a grounded metallic object in order to discharge any static built-up. Not doing so may result in malfunction or dam­age.
Page 13
1
SECTION 1
Hardware
The ASCII Unit is an intelligent PC peripheral device designed to make a PC-based control system more flexible and powerful. The ASCII Unit, programmed in BASIC, can be used for statistical quality control, system monitoring, data processing, report generation, and other tasks.
The ASCII Unit is a companion processor that relieves the PC of some of its housekeeping, monitoring, and decision making functions. Using BASIC, it is easy to program the ASCII Unit to process data collected by the PC and to imple­ment decisions based on the results.
The PC is constantly monitoring all of its input lines. Individual inputs might represent counts, time intervals, tempera­ture, position, data values, and many other parameters. Based on the values of these inputs, the PC must send the appro­priate signals to the various output devices to adjust or maintain the operation of the controlled system.
The PC makes decisions based on predefined values stored permanently in its memory. For example, the PC might be programmed to monitor the temperature of a mechanical system. It continuously compares the monitored temperature with a “danger” value stored in memory. If the system temperature exceeds this value, the PC could be programmed to shut the system down until the temperature falls below a “safe” level.
The above is a very basic example. In a more complicated system, it might be necessary to process large quantities of data from many different inputs, and based on the results of mathematical, relational, and logical computations, come to a decision that the PC must take a particular course of action. With an ASCII Unit, the PC can delegate these data process­ing and decision making tasks. Because the ASCII Unit is programmed in BASIC instead of Ladder Diagram Program­ming, it is better suited for data processing tasks.
The ASCII Unit also allows the user easy access to any desired information in any BASIC format via an attached printer or display terminal.
Using the ASCII Unit for intelligent support, the PC based control system becomes a more powerful, flexible, and effi­cient tool.
This section describes the external hardware of the ASCII Unit. The front and back panels of the ASCII Unit contain switches, buttons, connectors, and indicators which enable the user to set up, control, and monitor ASCII Unit operations.
1-1 Front Panel 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-2 Back Panel 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-3 System Configuration 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Page 14
2
1-1 Front Panel
The front panel contains two RS-232C communication ports, the program­mer’s START/STOP switch, a unit number selector, and several indicator LEDs. The back panel contains two sets of DIP switches for setting ASCII Unit parameters and the PC Backplane connector.
Ports The front panel of the ASCII Unit contains two RS-232C ports. These ports
are used for connecting peripheral I/O devices to the ASCII Unit. Both ports can be used for communication devices such as printers, terminals, and mo­dems. However, only port 1 can be used for uploading or downloading a BA­SIC program. The standard configuration is to connect a personal computer to port 1 and a printer or other I/O device to port 2.
Switches The START/STOP switch is a toggle switch that is used for initiating and halt-
ing execution of the ASCII Unit program. The Machine No. switch is used for identifying the particular ASCII Unit.
Since it is possible to have more then one ASCII Unit connected to a given PC, the Machine No. identifies each individual ASCII Unit. It is not permitted to have two ASCII Units with the same Machine No. The Machine No. can be set from 1 through 9. This should be done before power is applied to the Unit.
Indicators There are four indicator lights on the front panel. They are described in the
table following the diagram on the next page.
Front Panel Section 1-1
Page 15
3
Front Panel
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
RUN BASIC
1
[
T / R ERR
]
2
T / R ERR
ASC 02
START / STOP
Machine No.
Port 1
Port 2
LED Display
Indicates the operating status of the ASCII Unit.
START/STOP switch
Starts/stops BASIC pro­gram execution.
RS-232C connector port 1
Connects peripheral devices. Is generally used to input the BA­SIC program but can be used for other peripheral devices as well.
RS-232C connector port 2
Connects peripheral devices. Cannot be used to input a BASIC program. Is generally used for a printer or other RS232-C devices.
Machine No. switch
Sets the ASCII Unit Machine Number
Indicator LEDs
Name Indication Function
Run
(green)
Lit when the ASCII Unit is operating normally. Unlit if an error occurs.
T/R for ports 1 and 2
(green)
Blinks during data transmission (port 1 and port 2).
ERR 1 (error for port 1) ERR 2 (error for port 2)
(red)
Lit if an error such as parity error occurs, or while the ASCII Unit is waiting for specific transmission conditions to be satisfied.
(red - 1 only)
Blinks when the battery voltage has fallen below the rated level or when the battery has not been inserted correctly.
BASIC
(green)
Lit while the BASIC program is running.
(green)
Blinks when the BASIC program stops, or when the ASCII Unit is waiting for input while the BASIC program is running.
(green)
Unlit when in monitor mode.
Indication: Lit Blinking Unlit
Front Panel Section 1-1
Page 16
4
1-2 Back Panel
This section explains the operations of the back panel of the ASCII Unit. There are two 8-pin DIP switches on the Backplane side of the ASCII Unit. The desired configuration must be set before the ASCII Unit can be plugged into the Backplane.
Left-Side DIP Switch Definitions
Pin 1 is used to select the startup mode of the ASCII Unit. The BASIC pro-
gram can be automatically booted when power is applied or it can be acti­vated after power is applied by depressing the START/STOP switch.
Pin 2 allows automatic loading of a BASIC program from the EEPROM to the RAM when power is applied.
Pin 3 and Pin 4 are used to select which of the three BASIC programs will be used as the boot program.
Pin 5 is not used. Pins 6, 7, and 8 are used to select the screen size of the display terminal.
The DIP switches are described in more detail in the diagram on the follow­ing page.
Back Panel Section 1-2
Page 17
5
6: The pin numbers for port 2 corrected in the diagram. Left-Side DIP Switch Settings
OFFON: 0
: 1
12345678
Start mode
Pin No. 1 Function
Setting
0
Manual start mode In this mode, the BASIC program is not
started upon power application. To start the program, either press the START/ STOP switch or issue a start command from the personal computer connected to port 1.
1
Automatic start mode In this mode, the BASIC program is
started automatically on power applica­tion.
Automatic program transfer from EEPROM to RAM
Pin No. Function
Set this pin to “0” if only the RAM is to be used.
2
Set this pin to “1” to automatically transfer the program from the EE­PROM to RAM on power applica­tion or reset.
0
1
Setting
Program No.
Pin No. Function34
00 10 01 11
No. 1
No. 2 No. 3
Setting
Screen size
Pin No. Screen Size
Setting
40 columns x 7 lines 40 columns x 8 lines 40 columns x 15 lines 40 columns x 16 lines
80 columns x 16 lines
80 columns x 15 lines
80 columns x 24 lines 80 columns x 25 lines
678 000 1
1 11
1 1
11
111
00
00
0 00 0
0
1
These pins select which program will be executed on power application or reset. The program number can be changed later with the PGEN command.
Not Used. Always set this pin to OFF.
Back Panel Section 1-2
Page 18
6
Right-Side DIP Switch Definitions
Pins 1, 2, and 3 are used for setting the baud rate of port 1. Pin 4 is not used. Pins 5, 6, and 7 are used for setting the baud rate of port 2. Pin 8 is not used.
Right-Side DIP Switch Settings
Pin No.
Setting
567 000 1
1 11
1 1
11
111
00
00
0 00 0
0
1
Pin No.
Setting
123 000 1
1 11
1 1
11
111
00
00
0 00 0
0
1
300 BPS 600 BPS 1200 BPS 2400 BPS 4800 BPS
9600 BPS
300 BPS 600 BPS 1200 BPS 2400 BPS 4800 BPS 9600 BPS
19,200 BPS
Baud rate selection for port 1
Baud Rate
Not used (Always set these pins to OFF.)
Baud rate selection for port 2
Baud Rate
Not used (Always set these pins to OFF.)
OFFON: 0
: 1
12345678
Back Panel Section 1-2
Page 19
7
1-3 System Configuration
If the ASCII Unit is plugged into either of the 2 CPU Backplane slots next to the CPU Unit, it will not be possible to mount a Host Link Unit or a Program­ming Device, such as a Programming Console. Before mounting the ASCII Unit, the DIP switches must be set. Make sure that the power supply to the PC is turned OFF during installation of the ASCII Unit. A personal computer used for entering the BASIC program should be connected to Port 1 and oth­er peripheral I/O devices such as a printer or a display terminal can be con­nected to Port 2 (refer to the following diagram). For more detailed informa­tion on peripheral interface connections and timing, refer to Appendix B Specifications.
C200H-ASC02
Port 1 (RS-232C) Port 1/Port 2 (RS-232C)
Bar-code reader
Output
Printer
Plasma Display
Personal Computer
Laptop Computer
Input
C200H PC
System Configuration Section 1-3
Page 20
9
SECTION 2
Data Section
This section explains the data section of the PC, a special memory area used to communicate with the ASCII Unit. This section also defines several important terms which are used throughout this manual. The material in this section will be­come more clear later on when you begin working with an actual ASCII Unit program.
2-1 Bits and Bytes 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2-2 Data Section 11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Page 21
10
2-1 Bits and Bytes
The PC’s memory is divided up into many sections, each of which has its own name and purpose. The ASCII Unit can access any of these memory areas using the BASIC READ(@) and WRITE(@) statements (this is ex­plained in more detail in Section 4 BASIC Language). However, there is a special area in the PC’s IR data area that is assigned to each ASCII Unit. The MACHINE NO. switch on the front panel of the ASCII Unit (refer to Sec- tion 1-1 Front Panel) is used to select one of the nine possible positions.
The PC’s memory is organized into units called words. Information is usually stored in word or multiple word units. Each word has a unique address in the computer memory and can be accessed by specifying its address.
Each word contains 16 bits. A bit is the smallest piece of information that can be stored or accessed by a computer. A bit is always either one or zero. Cer­tain bits can be accessed individually and are used as flags. A flag is usually set (1) or cleared (0) by the hardware to indicate some state of the computer or to allow or disallow certain operations. Bits can also be set or cleared by the programmer to communicate certain parameters or conditions to the CPU.
For example: the ASCII Unit program requests data to be sent from the PC using the BASIC GET statement; however, the PC has not yet collected the data. The PC’s Write FLAG is cleared to zero (0), indicating that the ASCII Unit must wait. When the PC has collected the data, it sets the Write Flag to one (1), signaling the ASCII Unit that it may proceed to read the data.
Bits and Bytes Section 2-1
Page 22
11
2-2 Data Section
Each ASCII Unit is assigned four memory words called the Data Section for communication with the PC. The words are assigned from addresses 100 to 199 of the PC IR memory area. How this information is used will be under­stood better after you read the BASIC Language and Programming Exam­ples sections of this manual.
See the following tables for detailed information on the location, breakdown, and purpose of each bit of the Data Section:
SYSMAC C200H, C200HS, C200HX/HG/HE
Transferred to each Unit every time the I/O data is refreshed.
ASCII Unit
Refresh timing
Words n to n+2 OUT refresh Word n+3 IN refresh
4 words are used (n: 100 + 10 + unit no.)
IR Area
Word 100 to 103 Unit 0 Word 110 to 113 Unit 1 Word 120 to 123 Unit 2 Word 130 to 133 Unit 3 word 140 to 143 Unit 4 Word 150 to 153 Unit 5 Word 160 to 163 Unit 6 Word 170 to 173 Unit 7 Word 180 to 183 Unit 8 Word 190 to 193 Unit 9
Data Section Section 2-2
Page 23
12
Bit Definitions
I/O Word No. Bit Name Function
Output n 00 --- Not used (n = 100 +
10 x unit no.)
01 WRITE (PC to
ASCII)
This bit is used as a flag. When this flag is set (”1”) and the PC READ command is executed, a specified quantity of data will be transferred from the PC to the ASCII Unit, starting from a specified word. When this flag is cleared (”0”), execution of PC READ will be terminated. The interrupt numbers used by the ON PC GOSUB command become valid at the positive transition (i.e., from OFF to ON) of this flag.
02 READ (ASCII to
PC)
This bit is used as a flag. When this flag is set and the PC WRITE command is executed, a specified quantity of data will be transferred from the ASCII Unit to the PC. When this flag is cleared, execution of the PC WRITE command will be terminated.
03 Restart The ASCII Unit is initialized and restarted at the
negative transition of this flag (i.e., from ON to OFF). When this flag is set, the ASCII Unit is initialized.
04 to 07 Interrupt number These four bits constitute an interrupt number that is
used when the ON PC command is executed. These bits are read as a hexadecimal number; numbers 01 to 15 are treated as interrupt numbers while 00 is ignored.
08 to 15 Output data These bits constitute PC data. This data is written to
the ASCII Unit with MOV and read from the PC with the PC GET command in the BASIC program. Note: In addition to raw data, 8-bit address data can also be transferred to the ASCII Unit to facilitate branching within the BASIC program.
n + 1 00 to 11 Number of data
words to be transferred
These bits specify the number of words to be transferred by the PC READ or PC WRITE command. The number of words may not exceed 255.
12 to 15 --- Not used
Data Section Section 2-2
Page 24
13
Bit Definitions Continued
I/O Word No. Bit Name Function
Output (n = 100 + 10 x unit no.)
n + 2 00 to 12 Transfer base word
No.
These bits specify the PC base word (the first word from which data is accessed) for data transfer.
13 to 15 PC memory
These bits specify the section of the PC memory from which data will be transferred between the PC and ASCII Unit with the PC READ or PC WRITE command.
Bit No.
Data Area
0 DM Area
IR Area HR Area AR Area LR Area TC Area
00
00 0 0
000
0
1 1 11
1 11
15 14 13
Input n + 3 00 ASCII busy This bit is used as a flag that is set during data
transfer.
(n = 100 + 10
01 to 03 --- Not used
x unit no.) 04 Port 1 error This bit is used as an error flag that is set if a
transmission error (such as parity error) has occurred in port 1.
05 Port 2 error This bit is used as an error flag; it is set if a
transmission error (such as parity error) has occurred in port 2.
06 Battery error This bit is used as a flag that is set when the supply
voltage of the built-in battery has dropped below the
rated level or the battery is not correctly connected. 07 BASIC RUN This flag is set while the BASIC program is running. 08 Input data These bits constitute data that is transferred from the
ASCII Unit to the PC. The data is written to the PC with
the ASCII Unit PC PUT command and is read by the
PC with the MOV.
Note: In addition to raw data, 8-bit control data can
also be transferred to the PC to facilitate branching
within the PC program.
Data Section Section 2-2
Page 25
15
SECTION 3
Programming and Communication
Section 3-1 explains how the ASCII Unit and the PC exchange information. Section 3-2 explains how to transfer pro­grams from one device to another. The ASCII Unit BASIC program is written on a personal computer. To run the pro­gram, it must be transferred to the RAM of the ASCII Unit. The ASCII Unit program can be permanently stored in the ASCII Unit EEPROM and also loaded from the EEPROM. The program can also be transferred back to the personal computer or other storage device. Section 3-4 explains how to run a BASIC program once it has been transferred to the ASCII Unit.
3-1 Programs 16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-2 Program Transfer 17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-3 Running the BASIC Program 18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-4 Assembly Routines 18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Page 26
16
3-1 Programs
To use the ASCII Unit in conjunction with the PC, an ASCII Unit program writ­ten in BASIC is needed. A data exchange routine must also be incorporated into the PC program except when the READ(@...) and WRITE(@...) state­ments are used with specific memory area designators. The PC data ex­change routine must set the number of words to be transferred, the base address, and the specific memory area. This can be done using the PC MOV instruction.
There are two ways the ASCII Unit can communicate with the PC. In the first method, the PC controls the timing of the data transfer between the two de­vices. The ASCII Unit “requests” access to the PC data memory area using the PC READ, PC WRITE, PC GET, or PC PUT statements, and then waits for the PC to respond by setting either the read or write flag. The PC data exchange routine performs the designated operations. When the PC is ready, the appropriate flag is set and the ASCII Unit proceeds with the data transfer.
In the second method, no special PC data exchange code is necessary to facilitate communication between the two devices. If the memory area desig­nator parameter is specified with the PC READ or PC WRITE statement, the ASCII Unit can directly access the specified PC memory area.
The following two figures illustrate the relationship between the PC program and the ASCII Unit program.
PC program
General Program
General Program
Data exchange code
ASCII Unit program
Data exchange processing or I/ O program
write/read data exchange
PC program
I/O data ex­change
ASCII Unit program
Common memory
I/O memory
This diagram illustrates the relationship between the PC data exchange code and the ASCII Unit program.
PC READ command
PC WRITE command
PC PUT command
PC GET command
MOV Instruction
MOV instruction, OUT instruction, etc.
MOV Instruction
MOV instruction, OUT instruction, etc.
I/O memory
Programs Section 3-1
Page 27
17
3-2 Program Transfer
Preparation For the personal computer to communicate with the ASCII Unit, set the com-
puter communication software as follows: Baud rate: same as ASCII Unit
Data length: 8 bits Parity: none No. stop bits: 2
Also: Full duplex, no echo, no XON/XOFF buffer busy control, no auto line feed.
Set the ASCII Unit DIP switches to the desired configuration. (Refer to Section 1 for DIP switch settings.)
Transfer The ASCII Unit BASIC program must be written on a personal computer
which is connected to port 1 of the ASCII Unit through an RS-232C interface. A program can be transferred to the ASCII Unit from the personal computer or any other storage device connected to one of the communication ports with the BASIC LOAD command (refer to Section 4-2-2 Commands). Pro­grams can also be transferred from the ASCII Unit’s EEPROM to the ASCII Unit’s RAM using the LOAD command.
Programs can be transferred from the ASCII Unit’s RAM to the EEPROM or to a personal computer or other storage device connected to one of the com­munication ports using the BASIC SAVE command (refer to Section 4-2-2 Commands).
The ASCII Unit can be booted on power application by a program stored in the EEPROM. To do this, set pin 2 of the left-side DIP switch on the back panel of the ASCII Unit to ON (refer to Section 1-2 Back Panel).
During data transfer, an overflow may occur if the buffering capacity of the baud rate settings of the computer and the ASCII Unit are not matched. If an overflow error does occur, set either a slower baud rate or specify XON with the OPEN command.
Note The EEPROM’s guaranteed lifetime is 5000 write operations.
Program Transfer Section 3-2
Page 28
18
Direction of Data Transfer
Computer or other periph­eral device
Computer or other periph­eral device
SAVE #1, “COMU:” LOAD #1, “COMU:”
SAVE #2, “COMU:” LOAD #2, “COMU:”
(1)
(2)
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
RUN BASIC
1
[
T / R ERR
]
2
T / R ERR
ASC 02
START / STOP
Machine No.
Port 1
Port 2
Note Refer to the explanation of the OPEN command in Section 4-2-4 Device
Control Statements for details on COMU
.
3-3 Running the BASIC Program
The ASCII Unit can store and access three separate BASIC programs. Each program has an associated program number. The user can specify which program is to be used by setting a DIP switch on the back panel of the ASCII Unit. This must be done before the Unit is activated.
There are three ways to execute the specified BASIC program:
1, 2, 3... 1. Enter the RUN command from the keyboard of the personal computer.
(Keying in CTRL+X will abort the program.)
2. Pressing the START/STOP switch on the ASCII Unit will start the pro­gram. Pressing it again will stop the program.
3. If pin 1 of the left-side DIP switch is set to the ON position, the specified program will be executed automatically when the Unit is turned ON or when it is reset.
3-4 Assembly Routines
Assembly language routines can be written for the ASCII Unit and called from the BASIC program with the USR statement. An assembly program can be saved to the personal computer with the S command and loaded from the personal computer with the L command (refer to Section 5-3 Monitor Mode Commands). Assembly programs are stored in the S format.
Assembly Routines Section 3-4
Page 29
19
SECTION 4
BASIC Language
This section contains an explanation of the terminology, components, structure, and use of the BASIC programming lan­guage on the ASCII Unit. Even those familiar with BASIC should study this section carefully, as many of the ASCII Unit BASIC commands, statements, and functions are non-standard, especially those that control I/O operations. Experienced BASIC users may wish to skip Section 4-1 and move directly to Section 4-2. All readers should pay special attention to the explanation of statements that are prefixed with “PC.” Also pay special attention to the OPEN statement.
4-1 Program Configuration 20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-2 BASIC Language 25. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-2-1 BASIC Format 25. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-2-2 Commands 26. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-2-3 General Statements 32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-2-4 Device Control Statements 51. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-2-5 Arithmetic Operation Functions 54. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-2-6 Character String Functions 57. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4-2-7 Special Functions 60. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Page 30
20
4-1 Program Configuration
A BASIC program consists of commands, statements, and functions.
BASIC Language
Command
Function
Arithmetic operation function Character string function Special function
Statement
General statement
Device control statement
Basic Statements designate and control the flow of programs and are gen­erally used in program lines within a program.
Basic Commands are usually entered from the command line and control operations external to the program such as printing and listing.
Examples
: print, list, run
Functions are self-contained programs which accept one or more argu­ments, perform predefined calculations, and return a result/s. There are pre­defined BASIC functions for arithmetic and string operations as well as user­defined functions.
Examples
: INT(x), LOG(x), SQR(x)
Lines and Statements A program written in BASIC is a series of lines, each of which consists of one
or more statements. If several statement are written on the same line, they must be separated with colons(:). A line can be no longer than 255 charac­ters. Use single quotation marks (’) to separate comments.
Example
of four statements on a line:
10 FOR L=1 TO 100: J=L*I: PRINT J: NEXT L
Line Numbers Every BASIC program line begins with a line number. Line numbers indicate
the order in which the program lines are stored in memory and are also used as references for branching and editing. Line numbers must be in the range of 0 through 63999. A period may be used in AUTO, DELETE, EDIT, and LIST commands to refer to the current line.
Examples
:
LIST. EDIT. AUTO DEL 100-
Character Set The BASIC character set comprises alphabetical characters, numeric charac-
ters, and special characters. The alphabetic characters in BASIC are the upper case and lower case let-
ters of the alphabet. The numeric characters in BASIC are the digits 0 through 9.
The following special characters are recognized by BASIC: SP (space) ! ” # $ & ’ ( ) * + , - . / : ; < = > ? [ \ } ^ _
Constants The following can be used as constants:
Program Configuration Section 4-1
Page 31
21
Constants Character
Numeric Integer
Decimal Octal Hexadecimal
Real Number
Single-precision Double-precision
Character Constants A character constant is a character string enclosed by double quotation
marks (”). It can be up to 255 characters long. If it has no character, it is called an “empty character string” or a null string.
Example
: “CF-BASIC”
Integer Constants Whole numbers between -32768 and 32767 can be used. An optional per-
cent sign (%) can be added to specifically indicate an integer constant. Inte­ger constants do not have decimal points.
Examples
: 1234 -1234 12
Octal Constants Octal numbers 0 through 7 beginning with the prefix “&” and within the range
of &0 to &177777 can be used. Examples
: &0127 &7777
Hexadecimal Constants Hexadecimal numbers with the prefix “&H”, from 0 to F (0 to 9,A,B,C,D,E,F)
and in the range &H0000 to &HFFFF can be used. Examples
: &H5E &HBF4
Floating Point Constants Single precision: This type of constant is stored with seven-digit precision
and is output as a six-digit constant with the seventh digit rounded off. It is represented by one of the following methods:
1, 2, 3... 1. As a number with seven or less digits: 1234.5
2. As a number in exponential form using E: 1.2E+3
3. As a number with the character “!” at the end: 2.34!
Double precision: This type of constant is stored with 16-digit precision and is output as 16 digits or less. It is represented by one of the following methods:
1, 2, 3... 1. As a number with 8 or more valid digits: 1.23456789
2. As a number in exponential form using D: -1.2D-3
3. As a number with the character “#” at the end: 2.34#
Variables Variables are names used to represent values that are used in a BASIC pro-
gram. The value of a variable may be assigned as the result of calculations or explicitly by the programmer with an assignment statement. If no value is assigned to a numeric variable, it is assumed to be zero. If no value is as­signed to a character variable, it is assumed to be a null string.
Variable Name A variable may be up to 255 alphanumeric characters long, but only the first
16 characters are actually valid. No variable can start with “FN” or a valid BASIC command name.
If a parameter begins with a reserved word, syntax error will occur. TOTAL and ABSOL, for example, cannot be used because they include reserved words TO and ABS. Syntax errors will result if these parameters are used.
Type Declarator The variable TYPE must be declared. This is done using a type declarator
which is placed after the variable name. Even if two variables have the same name, they will be treated differently if they are declared as different types of variables.
Program Configuration Section 4-1
Page 32
22
Integer: Uses 2 bytes per variable. ! Single-precision real: Uses 4 bytes per variable. # Double-precision real: Uses 8 bytes per variable. $ Character: Uses a maximum of 255 characters.
There is a second way to declare variable types. The BASIC statements DE­FINT, DEFSTR, DEFSNG, and DEFDBL may be used to declare the types for certain variable names.
Variable Array An array is a group of values of the same TYPE that is stored and referenced
as a unit by the same variable name. Each element in an array has a unique position and is referenced by the name of the array subscripted with an inte­ger or integer expression.
There can be many dimensions to an array. The most common types are one, two, and three dimensional arrays. An array has one subscript for each dimension in the array.
For example, T(4) would reference the fourth element in the one-dimensional array T. R(2,3) would reference the value located in the second row and third column of the two-dimensional array R.
The maximum number of dimensions of an array is 255. The maximum num­ber of elements per dimension is 32767. The array size and number of di­mensions must be declared with the DIM statement. The subscript value zero is the position of the first element in an array. All elements of an array must be of the same TYPE.
Type Conversion When necessary, BASIC will convert a numeric constant from one TYPE to
another. The following rules and examples apply:
1, 2, 3... 1. If the numeric data on the right side of an assignment statement differs
from the type of data on the left side, the right side is converted to match the left. However, character data cannot be converted to numerical data, or vice versa. Example
: A = 12.3: if A is an integer, then “12” is assigned to A.
2. Double-precision data is converted to single-precision data when as­signed to a single-precision variable. Example
: IF “A” is a single-precision variable and the statement: LET A = 12.3456789# occurs in a program, then 12.3456789# will be
converted to a single-precision number and then assigned to “A.”
3. When an arithmetic operation is performed using both single-precision and double-precision values, the single-precision value is converted to double-precision first, and then the operation is performed. Therefore, the result is a double-precision value. Example
: 10#/3 (double-precision)
4. In logic operations, all numeric data is first converted into integer data. If any value cannot be converted into an integer within the range of
-32768 to 32767, an error will occur. Example
: LET A = NOT 12.34, -13 is assigned as A.
5. When a real number is converted into an integer, everything to the right of the decimal point is rounded off.
Program Configuration Section 4-1
Page 33
23
Example: A = 12.3: “12” is assigned to A.
Expressions Expressions refer to constants, variables, and functions that have been com-
bined by operators. Numeric values, variables, or characters alone can also form expressions. There are four types of expressions:
Arithmetic
Relational
Logical
Character
Of these, the first three produce numeric values as a result and are thus called “numeric expressions”. The last type is called a “character expres­sion.”
Arithmetic Operators An arithmetic expression is made up of constants, variables, and functions
combined using arithmetic operators. A list of valid arithmetic operators is shown in the following table.
Arithmetic Operator Example Operation
+ A + B Addition – A – B, –A Subtraction or negation * A * B Multiplication / A / B Real number division \ A \ B Integer division MOD A MOD B Remainder after integer division ^ A ^ B Exponentiation
Remarks: If A or B is a real number in an expression using the \ or MOD operator, the
decimal part is first rounded up to convert the real number into an integer, and then the operation is performed.
Relational Operators Relational operators compare two values. The output is “-1” (&HFFFF) if the
two values are equal and “0” if they are not.
Relational Operator Example Operation
= A = B Equal <>, >< A <> B Not equal < A < B Less than > A > B Greater than
A B
Less than or equal to
A B
Greater than or equal to
Character Operator A character expression is made up of character constants and variables that
are linked with the character operator “+”. Instead of adding characters to­gether, the “+” operator links the characters together to form one character value.
Input: A$=“CF” B$=“BASIC” PRINT A$+“-”+B$ Output: “CF-BASIC” is displayed.
Logical Operators Logical Operators perform tests on multiple relations, bit manipulation, or
Boolean operations. The logical operator returns a bitwise result which is ei­ther “true” (not 0) or “false” (0). In an expression, logical operations are per-
Program Configuration Section 4-1
Page 34
24
formed after arithmetic and relational operations. The outcome of a logical operation is determined as shown in the following table. The operators are listed in the order of precedence.
Logical Operator Description, Example, and Result
NOT (negation) A NOT A
1 0
0 1
AND (logical product) A B A AND B
1 1 1 0 0 1 0 0
1 0 0 0
OR (logical sum) A B A OR B
1 1 1 0 0 1 0 0
1 1 1 0
XOR (exclusive-OR) A B A XOR B
1 1 1 0 0 1 0 0
0 1 1 0
IMP (implication) A B A IMP B
1 1 1 0 0 1 0 0
1 0 1 1
EQV (equivalence) A B A EQV B
1 1 1 0 0 1 0 0
1 0 0 1
Operator Priority Arithmetic and logical operations are performed in the following order. Note,
however, that an expression or function enclosed by parentheses is executed first, irrespective of operator priority.
1. ^ (exponentiation) 8. NOT
2. - (negation) 9. AND
3. *, / 10. OR
4. \ 11. XOR
5. MOD 12. IMP
6. +. - 13. EQV
7. Relational operators
Calculation Examples of Logical Expressions NOT (negation)
A =1= 0000000000000001 NOT 1 = 1111111111111110 = -2 NOT A = -2
AND (logical product)
Program Configuration Section 4-1
Page 35
25
A = 5 = 0000000000000101 B = 6 = 0000000000000110 A AND B = 0000000000000100 = 4
OR (logical sum)
A = 4 = 0000000000000100 B = 3 = 0000000000000011 A OR B = 0000000000000111 = 7
XOR (exclusive OR)
A = -4 = 1111111111111100 B = 5 = 0000000000000101 A XOR B = 1111111111111001 = -7
EQV (equivalent)
A = -4 =1111111111111100 B = 5 = 0000000000000101 A EQV B = 0000000000000110 = 6
IMP (implication)
A = -4 = 1111111111111100 B = 5 = 0000000000000101 A IMP B = 0000000000000111 = 7
4-2 BASIC Language
This section explains, in detail, the BASIC commands, statements, and func­tions. They are presented in alphabetical order by section. Each description is formatted as described in the following section.
4-2-1 BASIC Format
Purpose: Explains the purpose or use of the instruction Format
: Shows the correct format for the instruction
The following rules apply to the format descriptions of all commands, instruc­tions, and functions:
Items in CAPITAL LETTERS must be input as shown.
Items in lower case letters enclosed in angle brackets (< >) are to be
supplied by the user.
Items in square brackets ([ ]) are optional.
All punctuation marks except angle and square brackets (i.e., commas, hy-
phens, semicolons, parentheses, and equal signs) must be included where shown.
Arguments to functions are always enclosed in parentheses. In the formats
given for the functions in this chapter, the arguments have been abbre­viated as follows:
x and y : represent numeric expressions I and J : represent integer expressions
BASIC Language Section 4-2
Page 36
26
A$ and B$ : represent string expressions
Remarks
: Explain in detail how to use the instruction.
Examples
: Show sample code to demonstrate the use of the instruction.
Notes
: Explain additional pertinent information.
4-2-2 Commands
This section describes all of the BASIC commands for the ASCII Unit.
AUTO Command
Purpose
: To automatically generate line numbers for each line of the pro-
gram
Format
: AUTO [<line>][,[<increment>]]
<line> is a an integer from 0 to 63999. <increment> is an integer value that specifies the increment of
the generated line numbers.
Examples
: AUTO 100, 10
AUTO 500, 100
Remarks
:
Auto begins numbering at <line> and increments each subsequent line num­ber by <increment>. The default value for both <line> and <increment> is 10.
The AUTO Command can be canceled by entering CTRL+X. If an already existing line number is specified, an asterisk (*) is displayed im-
mediately after the line number. If a new line number is input followed by a CR key, the new line number will be used instead. Pressing only the CR key leaves the line number unchanged.
CONT Command
Purpose
: To resume execution of a program after a Ctrl+X has been typed,
a STOP or END statement has been executed, or an error has occurred
Format
: CONT
Remarks: Execution resumes at the point where the break occurred. If CTRL+X is
pressed during data exchange with an external device, execution is aborted and the program cannot be resumed.
If the program is modified after execution has been stopped, the program cannot be resumed.
CONT is usually used in conjunction with STOP for debugging.
DEL Command
Purpose
: To Delete the specified program lines
Format
: DEL [<first>] [-<last>] or DEL <first> -
<first> is the first line number deleted. <last> is the last line number deleted.
Examples
:
DEL 100 Deletes line 100
BASIC Language Section 4-2
Page 37
27
DEL 100- Deletes all lines from line 100 DEL -150 Deletes all lines up to line 150 DEL 100-150 Deletes all lines between 100 and 150
Remarks
:
A period may be used in place of the line number to indicate the current line.
EDIT Command
Purpose
: To Edit one line of the program
Format
: EDIT <line>
<line> is the line number to be edited.
Remarks
:
The EDIT Command is used to display a specified line and to position the cursor at the beginning of that line. The cursor can then be moved within the specified line and characters can be inserted or deleted. Executing “EDIT .” will bring up the previously entered program line. “.” refers to the last line ref­erenced by an EDIT statement, LIST statement, of error message.
LIST Command
Purpose
: To list the program currently in memory on the screen or other
specified device Format: LIST [<line>] [-[<line>]] LLIST [<line>] [-[<line>]] <line> is a valid line number from 0 to 63339.
Remarks
:
LIST displays a program or a range of lines on the screen or other specified device.
If the line range is omitted, the entire program is listed. “LIST.” displays or prints the line that was last input or was last displayed.
Output can be aborted by entering CTRL+B or CTRL+X. If CTRL+B is used, listing can be resumed by entering CTRL+B again.
LIST/LLIST Commands can be written into the program, but the following statement will not be executed and the ASCII Unit will enter command input wait status.
The LIST Command automatically outputs to port 1 and the LLIST Command automatically outputs to port 2.
The LLIST Command outputs data to the device “LPRT” independently of the OPEN statement.
When the dash (-) is used in a line range, three options are available:
1, 2, 3... 1. If only the first number is given, that line and all higher numbered lines
are listed.
2. If only the second number is given, all lines from the beginning of the
program through the given line are listed.
3. If both numbers are given, the inclusive range is listed. Examples
:
LIST -500 List everything up to line 500 LIST 10-100 List all lines ranging from 10 through 100
BASIC Language Section 4-2
Page 38
28
LIST 200- List everything from line 200 on
LOAD Command
Purpose
: To load a program from the EPROM into memory
Format
: LOAD
Remarks
:
The contents of the program area specified with the MSET Command are loaded from the EEPROM.
Purpose
: To load a program sent from an RS-232C device to the current
program area Format
: LOAD #<port>,“COMU:[<spec>,<vsl>]
<port> is either port 1 or port 2.
<spec>: see OPEN statement tables.
<vsl>: valid signal line--refer to the OPEN statement tables. Example
: LOAD #1,“COMU:(43)
Remarks
:
When this command is executed, the BASIC indicator LED will begin blinking rapidly. Make sure the RS-232C device is connected at this time.
During execution of the LOAD command, the START/STOP switch and key input from port 1 will not be acknowledged.
The program area currently used is cleared immediately after the LOAD com­mand is executed.
For details on communication parameters, valid signal lines, and COMU, re­fer to the OPEN instruction.
MON Command
Purpose
: To change to monitor mode Format: MON Remarks
:
This Command passes control from BASIC mode to monitor mode (refer to Section 5 for details on monitor mode).
To return to BASIC mode, enter CTRL+B.
MSET Command
Purpose
: To reserve memory space for an assembly program Format
: MSET [<address>]
<address> is a hexadecimal number between &H200 and &H7FFF.
Example
: MSET &H5000
Remarks
:
When an assembly program is to be used in conjunction with a BASIC pro­gram, special memory space must be reserved for the assembly program.
The MSET command sets the lowest possible address that a BASIC program can occupy. The assembly program is then stored “below” the BASIC pro­gram in memory. It is necessary to reserve enough space for the assembly program to “fit”.
BASIC Language Section 4-2
Page 39
29
If no MSET address is specified, the default MSET boundary address will be set at &H2000. Do not specify an address higher than &H7FFF or the system stack will be overwritten.
The address specified by this command is maintained even if system power is turned OFF. To cancel the effect of this command, execute MSET &H2000.
This diagram illustrates the PC memory map before and after the MSET command is executed.
Under normal conditions
&H0000
&H0020
&H2000
&H8000
&HFFFF
I/O Area
System area
Basic text area
System stack area
Character String area
System area
(Standard 1K byte)
&H0000
&H0020
&H2000
&H8000
&HFFFF
When MSET is executed
I/O Area
System area
Assembly language program area
Basic text area
System stack area
System area
Character String area
(Standard 1K byte)
&H5000
NEW Command
Purpose
: To delete the program currently in memory and clear all variables Format
: NEW
Remarks: New is used to clear memory before a new program is entered. New causes
all files and ports to be closed. Programs named with the PNAME command cannot be erased. The name
must therefore be erased first by executing PNAME “ ” before the NEW com­mand is executed.
PGEN Command
Purpose: To select one of three program areas for the current program Format
: PGEN <num>
<num> is an integer of value 1, 2, or 3.
Remarks: The occupied capacity of the selected program area will be displayed. (Refer
to the discussion of the PINF command.)
PINF Command
Purpose
: To display memory area information Format
: PINF [<arg>]
BASIC Language Section 4-2
Page 40
30
<arg> is either an integer of value 1, 2, or 3 or the character string “ALL”. ALL is entered without quotation marks.
Examples
: PINF 1
PINF ALL
Remarks
:
This Command displays the amount of program area currently being used and the program names that have been assigned by the PNAME command. Specify 1, 2, or 3 as <arg> for a specific program area.
If <arg> is not specified, information on the area currently being used is dis­played.
If ALL is specified, information on all three program areas will be displayed.
PNAME Command
Purpose
: To assign a name to a program stored in the area specified with
the PGEN command or to cancel a previously assigned program name
Format
: PNAME <string>
<string> is the chosen name (enclosed in quotes) for the pro­gram or the null string, “ ”.
Examples
: PNAME “PROG1”
PNAME “ ”
Remarks
: The chosen name must be eight characters or less. Program areas assigned a name with the PNAME command are protected
from execution of the LOAD and NEW commands which erase program area contents. It is necessary to erase all assigned program names with the PNAME “ ” command before execution of the LOAD or NEW commands.
RENUM Command
Purpose
: To renumber program lines
Format
: RENUM [<new number>] [,[<old number>][,<inc>]]
<new number> is the first line number to be used in the new se­quence. The default is 10.
<old number> is the line in the current program where the re­numbering is to begin. The default is the first line of the program.
<inc> is the increment to be used in the new sequence. The de­fault is 10.
Examples
: RENUM 200
RENUM 500, 200, 10
Remarks
: RENUM will also change all line number references following GOTO, GO-
SUB, THEN, ELSE, ON ... GOTO, ON ... GOSUB, RESTORE, RENAME, and ERL statements to reflect the new line numbers.
Statement numbers greater than 63999 cannot be used.
RUN Command
Purpose
: To execute a program
BASIC Language Section 4-2
Page 41
31
Format: RUN [<line>]
<line> is any line number less than 63999.
Remarks: If a line number is specified, execution begins from that line. If the line num-
ber is omitted, execution starts from the first line of the program. The RUN command clears all variables and closes all open files before ex-
ecuting the designated program. Program execution can be aborted with CTRL+X, or the START/STOP
switch. Program execution can also be aborted from within the program by an END or STOP statement.
SAVE Command
Purpose
: To write the program area to the EEPROM
Format
: SAVE
Remarks: The contents of the BASIC program area and the assembly language pro-
gram area reserved with the MSET command are written to the EEPROM. If the START/STOP switch is pressed during execution of the SAVE com-
mand, the process will be aborted. Purpose
: To write a program in the current program area to a storage de-
vice connected to one of the ports.
Format
: SAVE #<port>,“COMU:[(<valid signal line>)]”
<port> is one of the two ports (1,2). <valid signal line>: refer to the OPEN statement tables.
Example
: SAVE #1,“COMU:(43)”
Remarks: When this command is executed, the BASIC LED indicator on the ASCII Unit
will blink rapidly warning the user to prepare the peripheral device for data transfer. When the device is set, press the START/STOP switch.
During execution of this command the START/STOP switch and key input through port 1 are inhibited.
For further details on COMU refer to the OPEN command.
TRON and TROFF Commands
Purpose
: To trace execution of a program
Format
: TRON
Remarks
: The TRON command is a debugging tool that enables the programmer to
follow the execution of a program line by line. Execution of the TRON com­mand will cause the line numbers of subsequent program statements to be displayed on the screen as they are executed.
The trace can be canceled with the TROFF command, the NEW command, by turning off the power or with the RESET switch.
VERIFY Command
Purpose
: To verify the contents of the EEPROM by comparing them to the
contents of the program area
BASIC Language Section 4-2
Page 42
32
Format: VERIFY Remarks
: If the contents of the program area are identical to those of the EEPROM, the
message “READY” will be displayed; otherwise, the message “PROM ER­ROR” is displayed.
4-2-3 General Statements
CLEAR Statement
Purpose
: To initialize numeric and character variables and set the size of
the character memory area
Example
: CLEAR [<size>]
<size> is the size of memory area used to process character strings and is specified in byte units.
Remarks
: This command initializes numeric variables to zero and character strings to
empty. It also clears all user functions defined by the DEF FN statement. This statement must be executed before the ON ERROR GOTO statement. <size> is automatically set to 200 bytes upon power application or after reset.
COM Statement
Purpose
: To enable, disable, or stop an interrupt defined by the ON COM
GOSUB statement.
Format: COM[<port number>] ON/OFF/STOP
<port number> is an integer (1 or 2).
Example
: COM1 ON
Remarks
: The COM ON statement enables an interrupt defined by the ON COM GO-
SUB statement. After this statement has been executed, an interrupt will be generated each
time data is written to the specified port buffer. The interrupt will cause pro­gram execution to branch to a routine defined by the associated ON COM GOSUB statement.
The COM OFF statement disables the com port interrupts. Even if data is written to a com port buffer, branching will not take place.
The COM STOP statement stops the com port interrupts from branching pro­gram execution. However, if the COM ON statement is subsequently ex­ecuted, branching to the specified interrupt service routine based on the “STOPPED” interrupt will then take place.
If no port number is specified, port 1 is selected as the default port. Execute the COM OFF statement at the end of the program. The COM ON/OFF/STOP statement can be executed only after the ON COM
GOSUB statement has been executed. Program Example
:
10 OPEN #2, “COMU:” 20 ON COM2 GOSUB 100 30 COM2 ON
BASIC Language Section 4-2
Page 43
33
40 GOTO 40
100 IF LOC(2)<>0 THEN A$=INPUT$ (LOC(2), #2)
110 RETURN
DATA Statement
Purpose
: Defines numeric and character constants to be specified in a
subsequent READ statement
Format
: DATA <constant>[,<constant>]...
<constant> may be a numeric constant in any format; i.e., fixed­point, floating-point, or integer. <constant> can also be a charac­ter string. Quotation marks are necessary only if the constant contains comas, colons, or spaces.
Example
: DATA CF, 10, 2.5, “A.:B”
Remarks
: Any number of DATA statements can be used in a program. READ state-
ments access DATA statements in order (by line number). The data con­tained therein may be thought of as one continuous list of items, regardless of how many items are on a line or where the lines are placed in the pro­gram.
DATA statements are non-executable and can be placed anywhere in a pro­gram. A data statement can contain as many constants as will fit on one line (separated by comas).
The variable type given in the READ statement must agree with the corre­sponding constant in the DATA statement.
DATA statements may be reread from the beginning by use of the RESTORE statement.
No comment (with “:” or “’”) can be written after the DATA statement.
DEF FN statement
Purpose
: To define and name a function written by the user
Format
: DEF FN<name>[(<arg1>[,<arg2>]...)] = <def>
<name>, which must be a legal variable name, is the name of the function.
<argn> is a list of variable names called parameters that will be replaced with values calculated when the function is called. The items in the list are separated by comas.
<def> is an expression that performs the operation of the func­tion and is limited to one line.
Example
: DEF FNA (X, Y, Z) = SQR(X^2 + Y^2 + Z^2)
Remarks
: A user function must be defined with the DEF FN statement before it can be
called. To call a user function once it has been defined, append FN to the assigned name of the function and set it equal to some variable.
distance = FNA(X,5,5) Variable names that appear in the defining expression serve only to define
the function; they do not affect program variables that have the same name. The variables in the parameter list represent, on a one-to-one basis, the
argument variables or values that will be given in the function call.
BASIC Language Section 4-2
Page 44
34
This statement may define either numeric or string functions. If a type is spe­cified in the function name, the value of the expression is forced to that type before it is returned to the calling statement.
If a type is specified in the function name and the argument type does not match, an error will occur.
DEF/INT/SNG/DBL/STR Statement
Purpose
: To declare variable types as integer, single-precision, double-
precision, or string
Format
: DEF <type><letter>[-<letter>]
[<letter>[-<letter>]]... <type> is INT, SNG, DBL, or STR
Remarks
: Any variable names beginning with the <letter(s)> listed will automatically be
assigned to the specified variable type. The “”, “!”, and “$” declaration characters take precedence over a DEF
<type> statement. If no type declaration statements are encountered, BASIC assumes all vari-
ables without declaration characters to be single-precision variables. Example
: DEFINT A-D, X
All variables beginning with A, B, C, D, and X will be integer variables.
DEF USER Statement
Purpose
: To specify the starting address of an assembly language subrou-
tine that will be called via the USR function
Format
: DEF USR [<digit>] = <offset>
<digit> is an integer from 0 to 9. The digit corresponds to the USR routine number whose address is being specified. If <digit> is omitted, DEF USR0 is assumed.
<offset> is the starting address of the USR routine.
Remarks
: Any number of DEF USR statements may appear in a program to redefine
subroutine starting addresses, thus allowing access to as many subroutines as necessary.
Program Example:
100 DEF USR1=&H2100
110 POKE &H2100, &H39 120 A=USR1 (A) 130 PRINT A
DIM Statement
Purpose
: To specify the maximum values for array variable subscripts and
allocate storage accordingly
Format
: DIM <variable>(<subscripts>)
[ ,<variable>(<subscripts>)]... <variable> is a legal variable name.
BASIC Language Section 4-2
Page 45
35
<subscripts> are the maximum number of elements for each di­mension of the array. There can be up to 255 subscripts but the maximum size of the array cannot exceed the amount of memory available.
Example
: DIM A (10,20), B$(30)
Remarks
:
If an array variable name is used without a DIM statement, the maximum val­ue of the array’s subscript(s) is assumed to be 10. If a subscript is used that is greater than the maximum specified, an error will occur. The minimum val­ue for a subscript is zero.
The DIM statement initializes all the elements of numeric arrays to zero. String array elements are initialized to NULL.
END Statement
Purpose
: To terminate program execution, close all files, and return to
command level
Format
: END
Remarks
:
END statements may be placed anywhere in the program to terminate ex­ecution. Unlike the STOP statement, END closes all open files or devices. An END statement at the end of the program is optional. BASIC always returns to command level after an END is executed.
ERROR Statement
Purpose
: To simulate the occurrence of an error, or to allow error codes to
be defined by the user
Format
: ERROR <n>
<n> is the error code to be simulated.
Remarks
:
Error code numbers 1 to 255 are predefined and reserved by BASIC. Higher numbers can be used for user-defined error code messages. User-defined error codes can be used together with the ON ERROR GOTO statement to branch the program to an error handling routine.
When the ERROR statement is executed without an accompanying ON ER­ROR GOTO statement, the error message corresponding to the specified error number is output and program execution is stopped. The message UN­DEFINED ERROR is displayed if an undefined error occurs.
The error number is assigned to the variable ERR and the line number where the error occurred is assigned to the variable ERL.
FOR and NEXT Statements
Purpose
: To allow a series of instructions to be performed in a loop a given
number of times
Format
: For <var>=<x> TO <y> [STEP<z>]
<x>, <y>, and <z> are numeric expressions.
Example
: 100 FOR Y = base TO 10 STEP 2
110 NEXT Y
Remarks
:
BASIC Language Section 4-2
Page 46
36
<var> is used as a counter. The first numeric expression (<x>) is the initial value of the counter. The second numeric expression (<y>) is the final value of the counter.
The program lines following the FOR statement are executed until the NEXT statement is encountered. Then the counter is incremented by the amount specified by STEP.
A check is performed to see if the value of the counter is now greater than the final value (<y>). If it is not greater, execution branches back to the first statement after the FOR statement and the process is repeated. If it is great­er, execution continues with the statement following the NEXT statement. This is a FOR...NEXT loop.
If STEP is not specified, the increment is assumed to be one. If STEP is neg­ative, the counter will count down instead of up. In this case, the loop will be executed until the counter is less than the final value.
The body of the loop will never be executed if the initial value of the loop is greater than the final value.
NESTED LOOPS FOR...NEXT loops may be nested, that is, a loop can be placed inside of
another loop. When loops are nested, each loop must have a unique variable name for its counter. The NEXT statement for the inside loop must come be­fore the NEXT statement for the outer loop.
If nested loops have the same endpoint, the same NEXT statement can be used for both of them.
If a NEXT statement is encountered before its corresponding FOR statement, an error message is issued and execution is terminated.
GOSUB and RETURN Statements
Purpose
: To branch to and return from a subroutine
Format
: GOSUB <line>
<line> is the first line number of the subroutine.
Remarks
:
A subroutine may be called any number of times in a program, and a subrou­tine may be called from within another subroutine.
The RETURN statement(s) in a subroutine causes execution to branch back to the statement following the most recent GOSUB statement.
A subroutine may contain more than one RETURN statement should logic dictate a return at different points in the subroutine.
Subroutines can appear anywhere in the program, but it is recommended that subroutines be readily distinguishable from the main program.
To prevent inadvertent entry into a subroutine, the subroutine may be preced­ed by a STOP, END, or GOTO statement to direct program execution around the subroutine.
Program Example
:
10 T = Time 20 GOSUB 100 30 {stuff} 40 . 50 . 60 .
BASIC Language Section 4-2
Page 47
37
90 GOTO 150
100
110 T = T + TIME 120 RETURN 130 {stuff}
GOTO Statement
Purpose
: To unconditionally branch program execution to the specified line
number
Format
: GOTO <line>
<line> is a valid line number.
Remarks
:
If <line> is a non-executable statement, execution will proceed at the first executable statement encountered after <line>.
IF...THEN Statement
Purpose
: To control program flow based on the results returned by an
arithmetic or logical expression
Format
: IF <expression> [ , ] THEN <statement(s)> or <line>
[ELSE <statement(s)> or <line>] IF <expression> [ , ] GOTO <line> [[ , ] ELSE <statement(s)> or <line>]
Example
: IF B=10 THEN PRINT “hello” ELSE 500
Remarks
:
If the result of <expression> is not zero, the THEN or GOTO clause will be executed (GOTO is always followed by a line number). THEN may be fol­lowed by either a line number for branching or one or more statements to be executed.
If the result of <expression> is zero, the THEN or GOTO clause will be ig­nored and the ELSE clause, if present, will be executed. IF there is no ELSE clause, execution will continue with the next executable statement.
INPUT Statement
Purpose
: To allow input from the keyboard during program execution
Format
: INPUT [;] [#<port>][<“prompt”>;]<variable>
[,<variable>]... #<port> is the port number (1 or 2). <“prompt”> is a message that will be displayed when the INPUT
statement is executed.
Examples
: INPUT “DATA” : A$
INPUT #2, “DATA” , A$, B$
Remarks
:
When an INPUT statement is executed, program execution pauses and a question mark is displayed to indicate the program is waiting for data. If <“prompt”> is included, the string is displayed before the question mark. The program will not continue execution until the user has entered the required data.
BASIC Language Section 4-2
Page 48
38
A comma may be used instead of a semicolon after the prompt string to sup­press the question mark.
Data is not accepted by the INPUT statement until a carriage return is en­tered. Therefore input can be edited with the backspace and delete keys.
When more than two variables are input, they must be delimited by commas or colons.
The data entered is assigned to the variables specified by the INPUT state­ment. The number of values entered must be the same as the number of variables in the INPUT statement.
The variable names in the list may be numeric or string variable types as well as subscripted variables (array variable). The type of each entered data item must agree with the type specified by the variable name.
Strings input to an INPUT statement need not be surrounded by quotation marks.
Responding to INPUT with too many or too few items will cause an error message to be displayed prompting the user to re-enter the data.
If a peripheral device other than TERM or COMU is selected by the OPEN statement, neither the prompt statement nor “?” is displayed.
To eliminate “?” when COMU, etc., is selected by the OPEN statement, use the LINE INPUT command.
The INPUT statement cannot be executed in direct mode. If the port number is omitted, port 1 is assumed as the default port.
KEY(n) Statement
Purpose
: To enable, disable, or stop an interrupt invoked by key input and
defined by the ON KEY GOTO or ON KEY GOSUB statements
Format
: KEY(<n>) ON/OFF/STOP
<n> is the key number (1-8).
Example
: KEY(4) ON
Remarks
:
The KEY ON statement enables an interrupt invoked by keyboard input. After this statement has been executed, an interrupt will be triggered each time the specified key is input. Program execution then branches to an interrupt ser­vice routine defined with the ON KEY GOTO or ON KEY GOSUB statements.
The KEY OFF statement disables the interrupt; key input will no longer trig­ger an interrupt.
The KEY STOP statement also disables the interrupt. However, if the inter­rupt is subsequently enabled with the KEY ON statement, execution will then branch to the interrupt service routine defined by the ON KEY GOTO or ON KEY GOSUB statements.
Execute the KEY OFF statement at the end of the program. Program Example
:
10 OPEN #1, “TERM:(42)” 20 ON KEY 1 GOSUB 100 30 On KEY 2 GOSUB 200 40 A=0 50 KEY ON 60 GOTO 60
BASIC Language Section 4-2
Page 49
39
100 PC READ “@D,0,1,14”;A
110 RETURN 200 PC WRITE “@D,0,1,14”;A 210 RETURN
LET Statement
Purpose
: To assign the value of an expression on the right side of an equal
sign to the variable on the left side
Format
: [LET] <variable>=<expression>
Example
: LET A = 1.2
Remarks
:
Notice the word LET is optional, i.e., the equal sign is sufficient when assign­ing an expression to a variable name.
Assignment of a character variable to a numeric variable, and the reverse, are not permitted.
When assigning unmatched types of numeric variables, the variable type on the right side of the equal sign is converted into the type on the left before the assignment is performed.
String assignments should be enclosed in double quotation marks.
LINE INPUT Statement
Purpose
: To input an entire line of characters (up to 255) from the key-
board or other input device without the use of delimiters
Format
: LINE INPUT [#<port>,] [“<prompt>”;]<string>
<port> is the port number (1 or 2). “<prompt>” is a message displayed on the screen prompting the
user for input. <string> is a string variable that is assigned to the input charac-
ter string.
Example
: LINE INPUT #2,”DATE”;A$
Remarks
:
All of the characters input from the end of the prompt to the carriage return are assigned to the character variable as a series of data. (Commas and co­lons are also treated as character data.)
A question mark is not displayed unless it is part of the prompt string. The prompt statement is not displayed if a peripheral device other than
TERM or COMU is selected with the OPEN statement. The character string is not assigned to the variable until the carriage return
key is pressed. Until then, the BASIC LED indicator on the ASCII Unit will blink indicating that the Unit is waiting for input of a carriage return.
If the port number is omitted, port 1 is assumed as the default port.
MID$ Statement
Purpose
: To replace a portion of one string with another string
Format
: MID$(<string 1>,<n>[,<m>]) = <string 2>
<string 1> is a string variable. <n> is an integer expression from 1 to 255.
BASIC Language Section 4-2
Page 50
40
<m> is an integer expression from 0 to 255. <string 2> is a string expression.
Example
: MID$(A$,2,4) = “ABCDEFGH”
Remarks: The characters in <string 1>, beginning at position <n> are replaced by the
characters in <string 2>. The optional <m> refers to the number of characters from <string 2> that will
be used in the replacement. If <m> is omitted, all of <string 2> is used. How­ever, regardless of whether <m> is included, the replacement of characters never goes beyond the original length of <string 1>.
Refer to the discussion of the MID$ function
ON COM GOSUB Statement
Purpose
: Defines an interrupt service routine to handle data coming into a
com port buffer
Format
: ON COM(<n>) GOSUB <line>
<n> is the port number (1 or 2). <line> is the line number of the first statement of the interrupt
service routine.
Example
: ON COM1 GOSUB 1000
Remarks: This statement is not valid unless it is executed after the specified port has
been opened. An interrupt service routine cannot be interrupted by another interrupt. If a
new interrupt occurs during processing of a previous interrupt, branching to handle the new interrupt will not take place until after the RETURN statement of the first interrupt service routine is executed. This means that, depending on the branch timing, nothing may be in the buffer when execution branches to the interrupt routine. It is therefore necessary to check whether data is in the buffer by executing the LOC or EOF Command at the beginning of the interrupt routine.
All subroutines must end with a RETURN statement. If a statement specified by the branch line number is non-executable, execu-
tion will begin with the first executable statement following the branch line number.
If zero is specified as the branch line number, it is assumed that the COM OFF statement has been executed.
If the port number is omitted, port 1 is selected. The ON COM GOTO statement is enabled with the COM ON statement and
disabled with the COM OFF statement. Program Example
:
10 OPEN #1, “COMU:(40)” 20 ON COM GOSUB 100 30 COM ON 40 PC READ “@D,0,2,2I4”;A,B 50 PRINT A, B 60 GOTO 30
BASIC Language Section 4-2
Page 51
41
100 IF LOC (1)=0 THEN 120
110 PRINT INPUT$ (LOC(1),#1) 120 RETURN
Program Remarks
:
If an interrupt from port 1 is detected, the buffer contents are displayed.
Note 1. If an interrupt is received on a communications line during processing of
an interrupt routine, a RETURN statement will be returned and a branch will be made again to the interrupt routine. When this happens, there may be nothing in the buffer depending on the timing of the interrupt. To handle this, always place LOC and EOF at the beginning of the interrupt routine to check if there is data in the buffer, as shown at line 100 in the applica­tion example given above.
2. When determining the contents of processing for interrupt routines, study the relationship between the communications speed and processing speed so that the receive buffers do not overflow while processing the interrupt routine.
ON ERROR Statement
Purpose
: To enable error processing and to specify the first line number of
the error handling routine
Format
: ON ERROR GOTO <line>
<line> is any valid line number.
Remarks
:
When an error occurs, this statement directs execution to the proper error handling routine. When an error is detected, the error number is assigned to the variable ERR and the line number where the error occurred is assigned to ERL.
To disable error processing, execute ON ERROR GOTO 0. Subsequent er­rors will cause an error message to be printed and execution to be halted.
If an error occurs during execution of an error handling subroutine, a BASIC error message will be printed and execution terminated.
Refer to the discussion of the RESUME Command, and the ERR and ERL functions.
ON GOSUB and ON GOTO Statements
Purpose
: To branch to one of several specified line numbers, depending
on the resultant evaluation of a numeric or logical expression
Format
: ON <expression> GOTO <list>
ON <expression> GOSUB <list> <expression> is any valid expression. <list> is a list of valid line numbers separated by comas.
Example
: ON X-2 GOSUB 50,100,150
Remarks: The value of <expression> determines which line number in the list will be
used for branching. For example, if the result is 2, then the second line num­ber in the list will be chosen for branching. If the resultant value is not an inte­ger, the fractional part is rounded off.
In the ON...GOSUB statement, each line number in the list must be the first line number of a subroutine.
BASIC Language Section 4-2
Page 52
42
If the value of <expression> is zero or greater than the number of items in the list, execution continues with the next executable statement. If the value of <expression> is negative or greater than 255, an error message will be dis­played.
ON KEY GOSUB Statement
Purpose
: Defines an interrupt service subroutine to handle specific key-
board input
Format
: ON KEY(<n>) GOSUB <line>
<n> is a numeric expression from one to eight indicating a spe­cific key.
Example
: ON KEY 1 GOSUB 1000
Remarks
:
An interrupt service routine cannot be interrupted by another interrupt. If a new interrupt occurs during processing of a previous interrupt, branching to handle the new interrupt will not take place until after the RETURN statement of the first interrupt service routine is executed.
If a statement specified by the branch line number is non-executable, execu­tion will begin with the first executable statement following the branch line number.
If zero is specified as the branch line number, it is assumed that the KEY OFF statement has been executed.
If the port number is omitted, port 1 is selected. There should be only one ON KEY GOTO statement for each key number. Key input will not be processed during execution of an assembly language
program. The ON KEY GOSUB statement is enabled with the KEY ON statement and
disabled with the KEY OFF statement. Program Example
:
10 OPEN #1,“TERM:(42)” 20 ON KEY 1 GOSUB 100 30 ON KEY 2 GOSUB 200 40 ON KEY 3 GOSUB 300 50 KEY ON
100 PRINT A
110 RETURN 200 PRINT B 210 RETURN 300 PRINT C 310 RETURN
Program Remarks
:
“A”, “B”, and “C” are displayed by pressing keys 1, 2, and 3, respectively. To cancel the specification, write 0 as the branch destination.
ON KEY GOTO Statement
Purpose
: To branch program execution to a specified line number in re-
sponse to a specific key input
Format
: ON KEY<n> GOTO <line>
<n> is an integer in the range of 1 to 8.
BASIC Language Section 4-2
Page 53
43
<line> is any valid line number.
Example
: ON KEY 1 GOTO 1000
Remarks
:
If a statement specified by the branch line number is non-executable, execu­tion will begin with the first executable statement following the branch line number.
If zero is specified as the branch line number, it is assumed that the KEY OFF statement has been executed.
If the port number is omitted, port 1 is selected. There should be only one ON KEY GOTO statement for each key number. Key input will not be processed during execution of an assembly language
program. The ON KEY GOTO statement is enabled with the KEY ON statement and
disabled with the KEY OFF statement. Program Example
:
10 OPEN #1,“TERM:(42)” 20 ON KEY 1 GOTO 100 30 ON KEY 2 GOTO 200 40 ON KEY 3 GOTO 300 50 KEY ON
100 PRINT “A”
110 GOTO 500 200 PRINT “B” 210 GOTO 5000 300 PRINT “C” 500 {cont. processing}
Program Remarks
:
“A”, “B”, and “C” are displayed by pressing keys 1, 2, and 3, respectively. To cancel the specification, write 0 as the branch destination.
ON PC ... GOSUB Statement
Purpose
: Defines an interrupt service routine invoked by the PC
Format
: ON PC [<int num>] GOSUB <line>
<int num> is an integer from 1 to 15. <line> is a valid line number.
Example
: ON PC 3 GOSUB 1000
Remarks
:
The interrupt number is indicated with bits 04 to 07 (1 to F in hexadecimal) of the first of the four memory words assigned to each ASCII Unit in the PC’s data memory area.
An interrupt routine invoked by the ON PC statement cannot be interrupted by another interrupt. If a new interrupt occurs during processing of a previous interrupt, branching to handle the new interrupt will not take place until after the RETURN statement of the first interrupt service routine is executed.
If the statement specified by the branch line number is non-executable, ex­ecution will begin with the first executable statement following the branch line number.
BASIC Language Section 4-2
Page 54
44
If zero is specified as the branch line number, it is assumed that the KEY OFF statement has been executed.
If the interrupt number is omitted, the same branch destination is assumed for all interrupt numbers, 1 through 15.
The ON PC GOSUB statement is enabled with the PC ON statement and disabled with the PC OFF statement.
Program Example
:
10 ON PC 1 GOSUB 100 20 ON PC 2 GOSUB 200 30 PC ON
100 PC READ “H4,I2”;I, J
110 PRINT I, J 120 RETURN 200 INPUT A 220 PC WRITE “14”; A 230 RETURN
Program Remarks
:
When interrupt 1 is invoked, program execution branches to statement 100, reads two words of data from the PC, and displays them on the CRT.
When interrupt 2 is invoked, program execution branches to statement 200 and writes data entered through the keyboard to the PC.
Programming Interrupts: Interrupting from the PC is prohibited while the ASCII busy flag is ON, and so
in this case the ON PC GOSUB statement will not be executed. For this rea­son, interrupting will not be possible during the execution of PC READ and other statements that turn ON the ASCII busy flag. When programming using statements for which the ASCII busy flag turns ON during execution (e.g., PC READ) and the ON PC GOSUB statement, design the program so that no interrupts are invoked while the ASCII busy flag is ON. It is also recom­mended that for programs where interrupts are activated by turning ON the WRITE flag, correct operation is confirmed before actual use.
Ladder Program at the PC (Unit Number = #0)
@MOV (21)
#0010
100
10001
10008
10300 10308Execution
10001
10308
Interrupt input
Confirmation of interrupt execution
BASIC Program (at the ASCII Unit)
BASIC Language Section 4-2
Page 55
45
10 ON PC 1 GOSUB 100 20 PC ON
30 PC GET A, B 40 IF B=1 THEN PC PUT 0
50 GO TO 30 60 END
100 PC PUT 1 110 Interrupt processing
120 RETURN
B = Bit 10008. If B = 1 then 10308 is turned OFF.
10308 is turned ON.
Remarks: An interrupt is invoked at the ASCII Unit from the PC program, avoiding the
time at which the ASCII busy flag is ON. When the WRITE flag turns ON, the ON PC GOSUB statement is executed by the ASCII Unit. The ASCII Unit notifies the PC that interrupt processing has been executed by turning ON bit
10308. The PC acknowledges this notification by turning ON 10008. When 10008 is turned ON, the ASCII Unit turns OFF bit 10308.
PC GET Statement
Purpose
: To read output data from the PC
Format
: PC GET <var 1>[,<var 2>]
Example
: PC GET I,J
Remarks: Bits 0 through 7 of Data Section word (n) are read and assigned to <var 1>.
Bits 8 through 15 of Data Section word (n) are read and assigned to <var 2>. The ASCII Unit converts the hexadecimal data into decimal data (0 through
255) before assigning it to the specified variables.
PC ... ON/OFF/STOP Statement
Purpose
: To enable, disable, or stop a PC interrupt defined with an ON PC
GOSUB statement
Format: PC [<num>] ON/OFF/STOP
<num> is a specific interrupt number.
Remarks
:
The PC ON statement enables an interrupt defined by the ON PC GOSUB statement.
After this statement has been executed, each PC interrupt will cause pro­gram execution to branch to a routine defined by the associated ON PC GO­SUB statement.
The PC STOP statement disables PC interrupts from branching program ex­ecution. However, if the PC ON statement is subsequently executed, execu­tion will branch to the specified interrupt service routine based on the “STOPPED” interrupt.
Execute the PC OFF statement at the end of the program. The PC ON/OFF/STOP statement can be executed only after the ON PC
GOSUB statement has been executed. If there is more than one interrupt routine in the program the specific interrupt
number should be specified. If there are two or more routines and the inter­rupt number is not specified, the routine closest to the end of the program or
BASIC Language Section 4-2
Page 56
46
at the highest line number will be executed regardless of which interrupt is invoked.
Program Example
:
10 ON PC GOSUB 100 20 PC ON
30 GOTO 30
100 PC READ “3I2”; A, B, C
110 PRINT A, B, C 120 RETURN
PC PUT Statement
Purpose
: To write data to the PC’s ASCII Unit Data Memory Area
Format: PC PUT <num exp>
<num exp> is a valid numeric expression between 0 and 255.
Examples
: PC PUT I
PC PUT 123
Remarks
:
Data is written to bits 8 through 15 of word n+3, where n is the first of the four PC Data Memory words assigned to each ASCII Unit.
If the value of the numeric expression is not an integer, the INT function is internally executed to round it off. If the value of the numeric expression is negative or greater than 255, zero is written to the PC.
PC READ Statement
Purpose
: To read data from the PC
Format
: PC READ “<format>[,<format>,<format>, ...]”;
<var1>[,<var2>,]... <format> specifies how the data will be read. For specific format
information, refer to Appendix D Formatting and Data Conver- sion.
Examples
:
PC READ “2H1, A3, I4, O2”; X, Y, A$, I, J Remarks
:
When the PC has written the data to the ASCII Unit, the PC READ statement is executed.
If the PC has not written the data to the ASCII Unit, the ASCII Unit will wait for the data, and the PC READ statement is not executed until the data com­es.
If the number of data items output by the PC is greater than that specified by the format parameters, the excess part of the output data will be ignored.
The maximum number of data items that can be transferred with one READ statement specification is 255 in the S or A formats.
If an amount of memory greater than the actual memory area is specified by the READ statement, a FORMAT ERROR will occur.
The PC READ statement’s formatting parameters can be assigned to a single character variable and that variable may then be used in the PC READ statement.
BASIC Language Section 4-2
Page 57
47
Refer to Appendix D Formatting and Data Conversion for details on READ and WRITE statement formatting.
Example
: A$ = “2H1, A3, I4, O2” PC READ A$;X, Y, A$, I, J
PC WRITE Statement
Purpose
: To write data to the PC
Format
: PC WRITE “<format>[,<format> ...]”;<exp1>
[,<exp2>, ...] Note For parameter definitions, refer to Appendix C. Examples
:
PC WRITE “H4, A2, I3, O4”; 1234, “AB”, K, L Remarks
:
If the data of the previous PC WRITE statement has not been read by the PC, the next PC WRITE statement cannot be executed until the previous one is completed.
The maximum number of data items that can be transferred with one WRITE statement specification is 255 in the S or A formats.
If an amount of memory greater than the actual memory area is specified by the WRITE instruction, a FORMAT ERROR will occur.
If the value of <exp> is not an integer, the INT function is internally executed to round it off.
Single-precision and double-precision numeric expressions are internally converted into integer expressions.
The PC WRITE statement’s formatting parameters can be assigned to a single character variable and that variable may then be used in the PC WRITE statement.
Example
: A$=“H4, A2, I3, O4” PC WRITE A$; 1234, “AB”, K, L
POKE Statement
Purpose
: To write one byte to a specified memory address
Format
: POKE <address>,<data>
<address> is the memory location where data will be POKEd. <data> is an integer from 0 to 255.
Example
: POKE &H2000,&H39 Remarks:
The address must be a 2-byte integer ranging from 0 to 65535 (&HFFFF). Do not write data to addresses &H0000 to &H2000, and &H8000 to &HFFFF; they are reserved for system use.
PRINT/LPRINT Statement
Purpose
: To output data and text to the screen or printer
Format
: PRINT [#<port>,] [<list of exp>][;]
BASIC Language Section 4-2
Page 58
48
LPRINT
<port> is an integer (1 or 2). <list of exp> can be numeric or character expressions. Character
expressions should be enclosed in double quotation marks.
Example
: PRINT #1,A,B$;“BASIC” Remarks
:
The list of expressions must be separated by commas, semicolons, or blanks. When the expressions are separated with blanks or semicolons, the next value is output immediately after the preceding value. When the expres­sions are separated with commas, the values are output at intervals of nine characters.
If the list of expressions is not terminated with a semicolon, a carriage return is appended after the last expression.
If numeric expressions are used, a blank is output before and after the resul­tant value. The blank before the value is used for a minus sign, if one is re­quired.
If <list of exp> is omitted, execution of this statement causes a carriage re­turn to be output.
If the port specification is omitted, port 1 is assumed for the PRINT state­ment, and port 2 for the LPRINT statement.
The LPRINT statement outputs data under control of the device connected to port 2, irrespective of the OPEN statement directives.
PRINT/ LPRINT USING Statement
Purpose
: To output strings or numbers according to a specified format
Format
: PRINT [#<port>,] USING “<format>”; <list of exp>
Example
: PRINT #1, USING “####,# \\###”;A;B Remarks
:
The following characters control the format of the output: ! Outputs the first character only.
& & Outputs the characters enclosed by &. @ Outputs the corresponding character string. # Outputs the corresponding character string. . Inserts a decimal point at any desired place. + Places a plus sign before and after a numeric value.
- Places a minus sign before and after a numeric value. (Write this
character at the end of the format character string.)
** Places two asterisks in the blank, upper digit positions of a numeric
value.
\\ Places one \ in the blank digit position immediately before a numeric
value. **\ Combines the functions of ** and \\. , Delimits an integer at every third digit position from the right.
BASIC Language Section 4-2
Page 59
49
^^^^ Indicates the output in exponential format (E+nn). Add this character
after #. “” is output before the numeric value if the specified number of digits is
too great. If the port number is omitted, port 1 is assumed for the PRINT USING state-
ment and port 2 for the LPRINT USING statement. The LPRINT statement outputs data under control of the peripheral device
connected to port 2 irrespective of the OPEN statement directives.
RANDOM Statement
Purpose
: To reseed the random number generator
Format
: RANDOM [<exp>]
<exp> is a single or double-precision integer that is used as the random number seed.
Example
: RANDOM 5649
Remarks
:
The value of <exp> should be from -32768 to 32767. If the expression is omitted, a message requesting the random number seed will be displayed.
If the random number generator is not reseeded, the RND function returns the same sequence of random numbers each time the program is run. To change the sequence of random numbers each time the program is RUN, place a RANDOM statement at the beginning of the program and change the seed with each RUN.
For more information, refer to the explanation of RND.
READ Statement
Purpose
: To read values from a DATA statement and assign them to the
specified variables
Format
: READ <list of var>
Example
: READ A,B$
Remarks
:
A read statement must always be used in conjunction with a DATA state­ment. READ statements assign variables to DATA statement values on a one-to-one basis. READ statement variables may be numeric or string, and the values read must be the same type as the corresponding variable. If they do not agree, a syntax error will occur.
A single READ statement may access one or more DATA statements (they will be accessed in order), or several READ statements may access the same DATA statement.
If the number of variables in <list of var> exceeds the number of elements in the DATA statement(s), an error message will be displayed. If the number of variables specified is fewer than the number of elements in the DATA state­ment(s), subsequent READ statements will begin reading data at the first unread element. If there are no subsequent READ statements, the extra data is ignored.
To reread DATA statements from the beginning, use the RESTORE state­ment.
REM Statement
Purpose
: To insert non-executable comments in a program
BASIC Language Section 4-2
Page 60
50
Format: REM <remark>
<remark> text does not need to be enclosed in quotes.
Example
: REM SAMPLE PROGRAM
Remarks
:
The REM statement is used to provide titles to programs and to insert helpful comments to be used during program debugging or modification.
Remarks may be added to the end of a line by preceding the remark with a single quotation mark instead of: REM.
Do not use a REM statement in a DATA statement as it will be taken as legal data.
RESTORE Statement
Purpose
: To allow DATA statements to be reread from a specified line
Format
: RESTORE [<line>] <line> should be the line number of a valid DATA statement. Example
: RESTORE 1000
Remarks
:
This statement causes the next READ statement to read the first element in the first DATA statement that exists in the program. If <line> is specified, the next READ statement accesses the first item in the specified DATA state­ment.
RESUME Statement
Purpose
: To resume program execution after an error handling procedure
has been performed
Formats
: RESUME [0]: execution resumes at the statement which caused
the error. RESUME NEXT: execution resumes at the statement immediate-
ly following the one which caused the error. RESUME <line>: execution resumes at <line>.
Example
: RESUME 100
Remarks
: Any one of the above formats may be used.
STOP Statement
Purpose
: To terminate program execution and return to the BASIC com-
mand level
Format
:STOP Remarks
:
Execution of this statement causes the message “BREAK IN xxxx” to be dis­played and the ASCII Unit to return to the command level.
The ports will not be closed. Program execution can be resumed with the CONT command.
WAIT Statement
Purpose
: Sets a time limit for the execution of a specific statement
Format
: WAIT “<wait time>”[,<line number>]
BASIC Language Section 4-2
Page 61
51
<wait time> is the allowable time for the monitored statement to
be executed. <line number> is any valid line number. Example
: WAIT “10:30.5”,100
Remarks
:
The delay time is set in the form MM.SS.F, where:
MM is the number of minutes up to 59 SS is the number of seconds F is tenths of seconds.
The statement immediately following the WAIT statement is the monitored statement. If execution of this statement is not completed within the set wait time, program execution will branch to <line number>.
Interrupts invoked by the ON COM, ON KEY, ON PC, or ON ERROR state­ments will not be recognized until after the WAIT statement or the monitored statement has been processed.
The WAIT statement can monitor the following statements: INPUT, INPUT$, LINE INPUT, PC READ, PC WRITE, PRINT, LPRINT,
PRINT USING, LPRINT USING If a statement other than one of those listed above is specified to be moni-
tored by a WAIT statement, and if execution of that statement is not com­pleted within the set time of the WAIT statement, an error will occur.
Program Example
:
10 WAIT “10.0”, 100 20 PC READ “3I4”; A, B, C, 30 PRINT A, B, C 40 END
100 PRINT “PC ERR”
110 GOTO 40
Program Remarks
:
This example will display the message “PC ERR” if the PC READ statement is not executed within 10 seconds.
4-2-4 Device Control Statements
This section describes statements that control hardware and communica­tions.
CLOSE Statement
Purpose
: To close a port
Format
: CLOSE [#<port>]
<port> is an integer (1 or 2). Remarks
: If the port number is omitted, both ports will be closed. Once the port has been closed, it cannot be used for data transfer until it is
opened again. Be sure to execute the CLOSE statement to correctly end the output pro-
cess. CLOSE dumps any data remaining in the buffer from output operations. It does not dump data from input operations.
BASIC Language Section 4-2
Page 62
52
The END statement and the NEW command automatically close the ports, but the STOP statement does not.
CLS Statement
Purpose
: To clear the screen
Format
: CLS [#<port>]
<port> is an integer (1 or 2).
Remarks
: This statement clears the screen and moves the cursor to the home position.
If the port number is omitted, port 1 is assumed.
OPEN Statement
Purpose
: To allow input/output operations to take place through the speci-
fied port
Format
: OPEN #<port>, “<device name>:[(<com spec. or vsl>)]”
<port> is an integer (1 or 2).
<device name> identifies the device.
<com spec> stands for the communication specifications.
<vsl> stands for valid signal line.
Examples
: OPEN #1,“KYBD:”
OPEN #2,“COMU:(14)”
The following three tables define the communication parameters for the OPEN Statement.
Peripheral Device Name Output from ASCII
Unit
Input to ASCII Unit
Terminal TERM: YES YES Keyboard KYBD: NO YES Display SCRN: YES NO Printer LPRT: YES NO RS-232C device COMU: YES YES
Communication
Specifications
Character Length Parity Stop Bit
0 7 bits Even 2 bits 1 7 bits Odd 2 bits 2 7 bits Even 1 bit 3 7 bits Odd 1 bit 4 8 bits None 2 bits 5 8 bits None 1 bit 6 8 bits Even 1 bit 7 8 bits Odd 1 bit
BASIC Language Section 4-2
Page 63
53
Signal Line CTS DSR RTS XON/XOFF
0 Valid Valid Valid Invalid 1 Valid Valid Invalid 2 Valid Invalid Valid 3 Valid Invalid Invalid 4 Invalid Valid Valid 5 Invalid Valid Invalid 6 Invalid Invalid Valid 7 Invalid Invalid Invalid 8 Valid Valid Valid Valid 9 Valid Valid Invalid A Valid Invalid Valid B Valid Invalid Invalid C Invalid Valid Valid D Invalid Valid Invalid E Invalid Invalid Valid F Invalid Invalid Invalid
Remarks: To make the CTS signal invalid at port 2, pull the CTS line high or connect it
to the RTS line. When the RTS is specified to be ON (valid), the RTS signal goes high when
the port is opened and remains high until the port is closed. When the RTS signal is specified to be OFF (invalid), the RTS signal remains low unless an I/O statement such as PRINT or INPUT is executed.
When continuously receiving data from a peripheral device, specify RTS ON. When implementing the interrupt function with ON COM, specify RTS ON. If RTS OFF is specified, interrupts will not be received.
When data is received with the XON code specified to be valid, and the data buffer is filled to 3/4 of its capacity, the XOFF code is sent, requesting a pause of transfer. If the contents of the receive buffer decrease to 1/4 of the buffer capacity, the XON code is sent, requesting resumption of transfer.
When the XOFF code is received during data transfer, transfer is paused. When the XON code is received, transfer is resumed.
If the communication specification and the valid signal line are omitted, their defaults are:
Peripheral Device Communication
Conditions
Valid Signal Line
Terminal 4 3 Keyboard 4 3 Display 4 3 RS-232C device 4 3 Printer 4 5
Ports already open cannot be opened again. When the OPEN and CLOSE statements are used, port 1 is assumed to be for a terminal and port 2 is as­sumed to be for a printer. Port 2 cannot be selected for a terminal.
I/O statements specifying #<port> cannot be used to transfer data through a port that has not been opened with the OPEN statement. To input/output data in the case where the OPEN statement has not been executed, use the I/O statements without the #<port> specification.
BASIC Language Section 4-2
Page 64
54
The following two tables illustrate peripheral device output levels during ex­ecution of the OPEN statement.
Device When Opened During Operation
RTS DTR RTS DTR
TERM LOW HIGH HIGH No Change SCRN LOW LOW HIGH No Change KEYB LOW HIGH HIGH No Change COMU LOW HIGH HIGH No Change LPRT LOW LOW HIGH No Change
Port When Closed
RTS DTR
1 LOW HIGH 2 LOW LOW
Remarks: The default selection for the ports is as follows:
port 1: Terminal device port 2: Printer
The following table presents the output control codes for the terminal, printer, and COMU device.
SCRN TERM
Open Clears the screen buffer when code &H0C (CLR) is output..The
column position is set to 0 (i.e., the leftmost position) when code &H0A (LF), &H0D (CR), &H0B (HOME), or &H08 (BS) is output. The cursor is moved as specified on the screen when code &H08 (BS), &H1C (->), or &H1D (<-) is output. Codes &H00 to &H09 and &H0E to &H1B are ignored (not output).
Closed Nothing is executed.
LPRT Open Sets the column position to 0 (i.e., the leftmost position) when
code &H0A, &H0D, &H0B, or &H0C is output. Characters exceeding 80th character are output with code &H0A (LF) appended.
Closed If characters (80 characters or less) remain in the buffer, they
are output along with &H0A (LF).
COMU Open If characters are input to the buffer, they are output.
Closed If characters remain in the buffer, they are output.
4-2-5 Arithmetic Operation Functions
ABS Function
Purpose: To return the absolute value of the numeric expression specified
by the argument
Format
: ABS(<x>)
Example
: A = ABS (-1.5)
ACOS Function
Purpose
: To return the arc cosine of the numeric expression given by the
argument
Format
: ACOS(<x>)
<x> is a number in the range of -1 to 1.
BASIC Language Section 4-2
Page 65
55
Example: A = ACOS (1) Remarks
: The arc cosine is given in radian units in the range of 0 to pi.
ASIN Function
Purpose
: To return the arc sine of the value given by the argument
Format
: ASIN(<x>) <x> is a number in the range of -1 to 1. Example
: A = ASIN (1)
Remarks
: The arc sine is given in radian units in the range of -pi/2 to pi/2.
ATN Function
Purpose
: To return the arc tangent of the value given by the argument
Format
: ATN(<x>) <x> is a number in the range of -1 to 1. Example
: A = ATN (1)
Remarks: The arc tangent is given in radian units in the range of -pi/2 to
pi/2.
CDBL Function
Purpose
: To convert a single-precision numeric value into
double-precision
Format
: CDBL(<x>) Example: CDBL (2/3)
CINT Function
Purpose
: To round off a numeric value at the decimal point and convert it
into an integer
Format
: CINT(<x>) Example
: A = CINT(B#)
COS Function
Purpose
: To return the cosine of the numeric value given by the argument
Format
: COS(<x>) <x> is an expression in radian units. Example
: A = COS(pi/2)
CSNG Function
Purpose
: To convert a numeric value into a single-precision real number Format: CSNG(<x>) Example
: B = CSNG(C#)
FIX Function
Purpose: To return the integer part of the expression specified by the argu-
ment Format: FIX(<x>) Example
: A = FIX(B/3)
Remarks
: If the value of the argument is negative, this function returns a
different value than the INT function returns.
BASIC Language Section 4-2
Page 66
56
INT Function
Purpose
: To return the truncated integer of a numeric value
Format
: INT(<x>)
Example
: A = INT(B)
Remarks
:
Returns the largest integer value less than or equal to the value specified by the argument.
If the value of the argument is negative, this function returns a different value than the FIX function returns.
LOG Function
Purpose
: To return the natural logarithm of the argument
Format
: LOG(<x>) <x> must be greater than 0. Example
: A = LOG(5)
RND Function
Purpose
: To return a random number between 0 and 1.
Format
: RND [<x>] Example
: A = RND(1)
Remarks
:
If <x> is negative, a new random number is generated. If <x> is omitted, or if it is positive, the next random number of the sequence
is generated. If <x> is 0, the last generated random number is repeated. The sequence can be changed by executing the RANDOM statement.
SGN Function
Purpose
: To return the sign of an argument
Format
: SIGN(<x>) Example
: B = SGN(A)
Remarks
:
If the value of <x> is positive, SGN returns 1. If the value of <x> is negative, SGN returns -1. If the the value of <x> is 0, SGN returns 0.
SIN Function
Purpose
: To return the sine of the numeric value given by the argument
Format
: SIN(<x>) <x> is an expression in radian units. Example
: A = SIN(pi)
TAN Function
Purpose
: To return the tangent of the numeric value given by the argument
Format
: TAN(<x>)
BASIC Language Section 4-2
Page 67
57
<x> is an expression in radian units. Example
: A = TAN(3.141592/2)
4-2-6 Character String Functions
ASC Function
Purpose
: To return the ASCII character code of the first character of the
given string
Format
: ASC(<x$>) Exampl
e: A = ASC(A$)
Remarks
:
An empty string cannot be specified. The CHR$ function performs the in­verse operation.
CHR$ Function
Purpose: To return a character corresponding to the specified character
code
Format
: CHR$(<i>) Example
: A$ = CHR$(&H41)
Remarks
:
<i> must be from 0 to 255. If <i> is a real number, it will be rounded off and converted into an integer. The ASC function performs the inverse operation.
HEX$ Function
Purpose: To return a string which represents the hexadecimal value of the
decimal argument
Format
: HEX$(<x>) Example
: A$ = HEX$(52)
Remarks
:
If the value of the decimal number includes a decimal point, the INT function is internally executed to round it off to an integer.
INSTR Function
Purpose: To return the position of the first occurrence of string <y$> within
string <$x>
Format
: INSTR([<i>,]<x$>,<y$>) <i> is the position from where the search starts. <i> must be be-
tween one and 255. <x$> is the string to be searched. <y$> is the desired string.
Example
: A = INSTR(5,B$,“BASIC”)
Remarks
:
If <i> is omitted, the search begins with the first character in <x$>. If the data cannot be found, 0 is returned as the function value. If <y$> is an empty string, INSTR returns <i> or 1.
LEFT$ Function
Purpose
: To return the specified number of characters beginning from the
leftmost character of the character string
BASIC Language Section 4-2
Page 68
58
Format: LEFT$(<x$>,<i>)
<x$> is the string to be searched. <i> is the number of characters to be returned.
Example
: A$ = LEFT$(B$,5)
Remarks
:
<i> must be an integer from 0 to 255. If <i> is 0, an empty string is returned as the function value. If <i> is greater than the number of characters in <x$>, the entire character string is returned.
LEN Function
Purpose
: To return the number of characters in a character string
Format
: LEN(<x$>) Example
: A = LEN(A$)
Remarks
: A value of 0 is returned if the “character expression” is an empty
string.
MID$ Function
Purpose
: To return the requested part of a given string
Format
: MID$(<x$>,<i>[,<j>]) <x$> is the given string.
<i> is the position of the first character to be returned. <j> is the number of characters to be returned.
Example
: B$ = MID$(A$,2,5)
Remarks
: <i> must be from 1 to 255. <j> must be from 0 to 255. If <j> is 0, or if the value of the specified character position (<i>) is greater
than the number of characters in the character expression (x$), an empty string is returned.
If <j> is omitted, or if <j> exceeds the number of characters to the right of the specified position (<i>) in the character expression, all the characters to the right are returned.
OCT$ Function
Purpose
: To convert the specified decimal number into an octal character
string
Format
: OCT$(<x>) <x> is a numeric expression in the range of -32768 to 32767. Example
: A$ = OCT$(B)
Remarks
:
If the value of <x> includes a decimal point, the INT function is internally ex­ecuted to round it off.
RIGHT$ Function
Purpose
: To return the specified number of characters from the rightmost
character of the character string
BASIC Language Section 4-2
Page 69
59
Format: RIGHT$(<x$>,<i>)
<x$> is the string to be searched. <i> is the number of characters to be returned.
Example
: A$ = RIGHT$(B$,5)
Remarks: <i> must be an integer from 0 to 255. If <i> is 0, an empty string is returned
as the function value. If <i> is greater than the number of characters in <x$>, the entire character string is returned.
SPACE$ Function
Purpose
: To return a string of spaces of the specified length
Format
: SPACE$(<x>) <x> is the number of spaces. Example
: A$ = “CF”+SPACE$(5)+“BASIC”
Remarks: <x> must be from 0 to 255. If <x> is not an integer, it will be rounded off. If 0
is specified, an empty character string is returned.
STR$ Function
Purpose
: Converts the specified numeric value into a character string
Format
: STR$(<x>) Example
: B$ = “A”+STR$(123)
Remarks
: The VAL function performs the inverse operation.
STRING$ Function
Purpose
: To return a character string of the specified character and length
Formats
: STRING$(<i>,<j>)
STRING$(<i>,<x$>) <i> is the number of characters to be returned.
<j> is the ASCII code of some character. <x$> is a given string.
Example
: A$ = STRING$(10,“A”)
Remarks
: <i> and <j> must be from 0 to 255. An empty string is returned if the <i> is 0. If the <x$> is made up of two or more characters, only the first character is
used.
TAB Function
Purpose
: To move the cursor to a specific position on the terminal display
Format
: TAB(<i>)
<i> is the cursor position counting from the leftmost side of the display.
Example
: PRINT “CF” TAB (10) “BASIC”
BASIC Language Section 4-2
Page 70
60
Remarks: The “column position” must be from 1 to 255. If the current print position is already beyond <i>, the cursor moves to the
<i>th position on the next line. TAB is only valid for the PRINT and LPRINT statements.
VAL Function
Purpose
: To convert a character string into a numeric value
Format
: VAL(<x$>)
Example
: A = VAL(A$)
Remarks
: The VAL function also strips leading blanks, tabs, and linefeeds from the ar-
gument string. If the first character of <x$> is not numeric, zero is returned.
4-2-7 Special Functions
DATE$ Function
Purpose: To set or display the current date Format
: As a statement: DATE$ = <x$>
As a variable: <y$> = DATE$ <x$>: the date in one of the following formats:
mm-dd-yy mm-dd-yyyy mm/dd/yy mm/dd/yyyy
<y$>: A ten character string in mm-dd-yyyy format:
mm: two digit value for the month (01-12) dd: two digit value for the day (01-31) yy: two digit value for the year yyyy: for digit value for the year
Example
: DATE$ = “89/05/23”
Remarks
: If DATE$ is on the right side of the assignment statement or in a PRINT
statement, the current date is assigned or printed, respectively. If DATE$ is on the left side of the assignment, the right side of the assignment statement becomes the new current date. If any of the values are out of range or are missing, an error message will be displayed.
DAY Function
Purpose
: To give or set the current day of the week
Format
: DAY = <num>
I = DAY
Remarks: In the first format, DAY returns a number between 0 and 6, corresponding to
Sunday through Saturday. In the second format, the day of the week is as­signed to DAY.
BASIC Language Section 4-2
Page 71
61
EOF Function
Purpose
: To check whether the specified port buffer is empty
Format
: EOF (<port#>)
Example
: IF EOF (2) THEN CLOSE#1 ELSE GOTO 100
Remarks: This function returns true (-1) if the specified port is empty. If not, it returns
false (0). Note that the port specified by <port#> must already be open and in the input mode.
ERR and ERL Variables
Purpose
: To return the error code and the location (line number) of the
error
Format: x = ERL
y = ERR
Remarks
: When an error occurs, the error code is assigned to the variable ERR and
the statement number is assigned to ERL. If the statement that caused the error was executed in direct mode, state-
ment number 65535 is assigned to ERL. ERL and ERR can be used in error handling routines to control the execution
flow of the program.
FRE Function
Purpose
: To return the amount of unused memory
Format
: FRE(0)
FRE(<x$>)
Example
: PRINT FRE (0)
Remarks
: If the argument is numeric, the number of unused bytes in the program area
is given. If the argument is a character expression, the number of unused bytes in the
character variable area is given.
INKEY$ Function
Purpose
: To return the character code of the key being pressed
Format
: INKEY$ [#<port>]
Example
: A$ = INKEY$
Remarks
: A null string is returned if no key is being pressed. Any key input other than
CTRL+X is valid. Port 1 is the default port.
INPUT$ Function
Purpose
: To Read a string of characters from the keyboard or from a pe-
ripheral device
Format
: INPUT$ (<num>[,#<port>])
<num> is the number of characters to be input. <num> must be from 1 to 255.
BASIC Language Section 4-2
Page 72
62
<port> is the port number (1 or 2).
Example
: A$ = INPUT$(10,#1)
Remarks
: All characters except CTRL+X can be read, including CR and LF: CR and LF
cannot be read with the LINE INPUT statement. The BASIC LED indicator on the ASCII Unit will blink indicating that the Unit
is waiting for input. It will continue blinking until the specified number of char­acters is entered.
Example Program
:
10 CLS 20 A$ = INPUT$ (1) 30 A$ = HEX$ (ASC(A$)) 40 PRINT A$ 50 GOTO 20
Remarks
: Displays key character codes.
LOC Function
Purpose
: To return the number of data items in the specified port buffer.
Format
: x = LOC(<port#>)
Example: A = LOC(2) Remarks
: The port specified must already be open and in input mode. The number of
data items in the buffer of the specified port is given in byte units.
PEEK Function
Purpose
: To read the contents of a specified memory address
Format
: PEEK(<I>)
<I> is the memory location and must be in the range of 0 to 65535 (&HFFFF).
Example
: A = PEEK(&H3000)
Remarks
: If the specified address is not an integer, it is converted into one. Do not try to read reserved system addresses &H0000 through &H1FFF and
&H8000 through HFFFF.
Note For details of memory structure, refer to Appendix E ASCII Unit Memory
Map.
TIME$ Function
Purpose
: Sets or gives the time
Format
: TIME$ = <x$>
<y$> = TIME$ <x$> is a string expression indicating the time to be set. The fol-
lowing formats may be used:
hh: sets the hour (minutes and seconds 00)
BASIC Language Section 4-2
Page 73
63
hh:mm: sets the hours and minutes (seconds 00) hh:mm:ss: sets the hours, minutes, and seconds
<y$> is a string variable to which the current value of the time is to be assigned.
Example
: TIME$ = “09:10:00”
PRINT TIME$
Remarks
: In the form <y$> = TIME$, TIME$ returns an eight character string in the form: hh:mm:ss. If <x$> is not a valid string, an error message will be dis-
played.
USR Function
Purpose: To call a user-written assembly language program. Format
: USR [<number>](<argument>)[,W]
<number> is a digit from 1 to 9 that was previously assigned to the given assembly program with the DEF USR statement.
<x> is an argument used to pass data from the BASIC program to the assembly program.
Example
: J = USR2(I),W
Remarks
: If <number> is omitted, the default value is zero. If the W parameter in the USR statement is not specified, the watchdog timer
refresh will be performed as usual. If the W parameter is specified, then the user must include a watchdog timer refresh routine in the assembly program.
The watchdog timer prevents the program from overrunning. When the set time has run out, the ASCII Unit is reset, and the message “I/O ERR” is dis­played on the programming console of the PC.
By refreshing the watchdog timer before its set value is up, the program can be continuously executed.
To refresh the watchdog timer in the assembly program, execute the follow­ing two steps every 90 milliseconds:
AIM #DF,03 OIM #20,03
The following table lists the Argument type and its corresponding Accumula­tor code number.
Accumulator Value Argument Type
2 Integer 3 Character 4 Single-precision, real number 8 Double-precision, real number
Index register X contains the memory address where the argument is stored. The address differs depending on the type of the argument as shown in the following diagram.
BASIC Language Section 4-2
Page 74
64
Integer Type
Higher 8 bits Lower 8 bits
X
Character T ype
Length of character string Address storing argument (higher) Address storing argument (lower)
X
X
(MSB is always 1.)
Single-Precision, Real Number Type
Exponent Higher 8 bits of mantissa Middle 8 bits of mantissa Lower 8 bits of mantissa
Sign (most significant bit)
X
(MSB is always 1.)
Double-Precision, Real Number Type
Exponent Higher 8 bits of mantissa
Lower 8 bits of mantissa Sign (most significant bit)
Program Example: BASIC Program:
100 A$ = &H1234
110 DEF USR0 = &H2000 120 A = USER (A) 130 PRINT A 140 END
Assembly language program:
2000 PSHA 2001 PSHX
BASIC Language Section 4-2
Page 75
65
2002 LDD 2,X 2004 ADD #10 2007 STD 2,X 2009 PULX 2010 PULA 2011 RTS
Program Remarks
:
When program execution branches to the assembly language routine, the TYPE of <argument> is stored in the accumulator A, and the memory ad­dress where the argument is stored is input to the index register X. The value of the argument is stored in the accumulator D, to whose contents &H10 will be added. The result of the addition is written to the address of <argument>.
VARPTR Function
Purpose
: Returns the memory address of the variable argument
Format
: <x> = VARPTR(<variable>)
<variable> is a number, string, or array variable.
Example
: B = VARPTR (A)
Remarks
:
The VARPTR function returns the address of the first byte of data identified with the variable. A value must be assigned to the variable prior to the call to VARPTR or an error will result. Any type variable name may be used (numer­ic, string, array).
Note that all simple variables should be assigned before calling VARPTR for an array because addresses of arrays change whenever a new simple vari­able is assigned.
VARPTR is used to obtain the address of a variable or array so that it may be passed to an assembly language subroutine. A function call of the form VARPTR(A(0)) is specified when passing an array, so that the lowest ad­dressed element of the array is returned.
The following figure illustrates the relationship between the variable type and the address indicated by VARPTR.
BASIC Language Section 4-2
Page 76
66
Integer Type
0010
Variable name
Higher 8 bits
Lower 8 bits
Address
Character Type
0011 Variable name length -1
Variable name
Address storing variable (higher)
Address storing variable (lower)
Length of character string
Single-Precision, Real Number Type
0100 Variable name length -1
Variable name
Address
Double-Precision, Real Number Type
1000 Variable name length -1
Variable name
Sign and higher 7 bits of mantissa
Exponent
Exponent
Sign and higher 7 bits of mantissa
Middle 8 bits of mantissa
Lower 8 bits of mantissa
Lower 8 bits of mantissa
Variable name length -1
BASIC Language Section 4-2
Page 77
67
SECTION 5
Assembly Programming
This section explains how to create, edit, transfer, and use an assembly language program. Assembly programs are faster and use memory more efficiently than higher level programs such as BASIC. In certain situations it is advantageous to use assembly routines instead of BASIC to perform specialized functions. An assembly routine can be called from the BASIC program and used in much the same way as a BASIC subroutine.
Assembly programs are written, edited, and tested in what is called monitor mode. The monitor mode commands and examples of their use are presented in this section.
5-1 Assembly Language Programming 68. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5-2 Terminology and Formatting 69. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5-3 Monitor Mode Commands 69. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Page 78
68
5-1 Assembly Language Programming
Memory Area Special memory space for assembly language programs must be reserved
with the MSET command. When programming in assembly language, you cannot use the BASIC program area to store the assembly program. The MSET command will move an existing BASIC program to another part of memory.
There are two ways to write an assembly language program:
By using the monitor functions
By directly writing the program to the memory using the POKE
statement in BASIC.
In most cases the first method is quicker and easier; however, the second method can be used to create short programs consisting of only a few steps.
Assembly language programs can be written to and read from RAM using the S and L commands, respectively. They can also be written to or read from the EEPROM by using the SAVE and LOAD commands, respectively.
Addresses &H0000 to &H1FFF and &H8000 to &HFFFF are reserved for the ASCII Unit operating system and must not be altered by the user.
Note When it is necessary to load or save data using a peripheral device other
than the input terminal connected to port 1, perform the peripheral data trans­fer procedure as follows:
1, 2, 3... 1. Enter the command and key-in a carriage return.
2. Disconnect the input terminal from port 1 and connect the peripheral device.
3. Press the START/STOP switch on the ASCII Unit to start data transfer.
4. Reconnect the input terminal and key-in ctrl+x.
An assembly language program can be called from BASIC with the USR function:
USR [<number>][<argument>] Before the USR function can be used, the DEF USR statement must be ex-
ecuted to reserve space for the assembly routine. When the USR function is executed, it calls the specified assembly routine and passes it an argument defined in the BASIC program. (Refer to Section 4-2-7 Special Functions.)
Variables other than the argument specified by the USR function can also be passed to the assembly language program by using the VARPTR function.
The following arguments are passed to the assembly program:
Accumulator A contents: type of <argument> Index register X contents: address of <argument>
The RTS command should be the last command of the assembly routine; it returns execution back to the BASIC program.
The value of the stack pointer must not be altered by the assembly routine. Therefore, the data should be pushed on the stack at the beginning of the routine and then pulled off before the RTS command is executed.
The assembly routine must store any data needed by the BASIC program in the same address as that of the argument(s) passed by the USR or VARPTR functions. Any data passed back to the BASIC program must be of the same TYPE as the USR or VARPTR function argument(s).
Writing an Assembly Program
The Assembly Language Program
Assembly Language Programming Section 5-1
Page 79
69
Do not disable any interrupts in the assembly language program. It is recommended that the assembly language program be saved on an ex-
ternal storage device or in the EEPROM for safety.
Monitor Mode To enter monitor mode from BASIC mode, key-in “mon” followed by a car-
riage return when the message “READY” is displayed on the console:
READY
mon
*
When in monitor mode “*” is displayed on the leftside of the screen. Also, when in monitor mode, the BASIC LED on the ASCII Unit front panel is unlit.
To return to BASIC mode, key-in CTRL+B.
5-2 Terminology and Formatting
Terminology Start address refers to the first memory address where a group of values
stored in consecutive memory locations is stored: e.g., an array or a block of data.
For some monitor mode commands, indicating a start address is optional. For these commands, the address immediately following the highest or larg­est address used by the previous monitor command is taken to be the start address for the current monitor command. To simplify following explanations, this address will be called the base address.
An assembly language program can be edited, traced, and debugged in monitor mode.
Note that the address held in the program counter is the base address used for displaying and writing data when using the monitor commands.
Format The left and right arrow brackets “<” and “>” that have been previously used
to denote “user supplied text” in BASIC programming format statements are used as actual operators in monitor mode. Therefore, whenever you see an arrow bracket character in a monitor mode command, it must be entered as such. The arrow character is used to delineate address ranges.
For monitor format statements only, left and right parentheses “( )” will be used to denote user-supplied text.
Brackets “[ ]” still indicate optional entry. Pay close attention to periods “.”; they must be entered as such whenever indicated.
The carriage return key is indicated with
. Whenever this appears in a com-
mand, a carriage return must be entered by the user.
Do not insert spaces within a monitor command unless explicitly indi­cated.
In the following examples, and also on the actual terminal, the “
*” character
indicates that the user must enter a command. Lines of text that do not start with “*” are generated by the computer in response to a user command.
5-3 Monitor Mode Commands
The following table lists the monitor mode commands with a short description of each command’s function as well as the page number on which its detailed explanation can be found.
Monitor Mode Commands Section 5-3
Page 80
70
Page Command Purpose
66 address
Displays/changes memory contents at the specified address.
68 M
Transfers memory contents.
69 C
Compares memory contents.
69 R
Displays/changes register contents.
70 BP
Sets/displays breakpoints.
70 N
Clears breakpoints.
71 I
Disassembler
71 S
Outputs data to a port.
72 L
Loads data from a port.
72 V
Verifies data.
73 G
Executes a program.
73 T
Single-step program execution
74
Mini-Assembler Single-line assembly
74
Arithmetic Addition/subtraction of hexadecimal numbers.
DUMP Command
Purpose
: To display the contents of memory in hexadecimal
Format: [(display start address)].[(display end address)]
Remarks
:
If the carriage return
is input by itself, eight bytes of data starting from the
base address will be displayed. (refer to example 2) If an address is entered preceded by a period, e.g., “.3000”, data stored in all
the addresses from the base address to the entered address will be dis­played (refer to examples 3 and 4).
New data can be stored in memory as well; this data will overwrite existing data. Input data must be in hexadecimal. Upper case characters must be used for the alphanumeric values of A through F (hex). When the leftmost digit is a “0”, it can be omitted.
There are two ways to poke data (directly store data to a specific address).
1, 2, 3... 1. Specify the first address followed by a colon. Directly after the colon,
enter the data (1 or 2 byte hexadecimal values only) separated by spaces. Then type a carriage return (refer to example 5).
2. Enter a colon followed by the data and type a carriage return. Data will be stored starting from the base address (refer to example 6).
Examples
:
1. Enter: *4000
Displayed: 4000-10
Displays 1 byte of data from the specified address.
2. Enter: *
Displayed: *20 30 50 60 70 80 90 9F
Displays 8 bytes of data, starting from the base address.
3. Enter: *.4010A
Displayed: 4008-A0 B0 C0 D0 E0 F0 00 10
Monitor Mode Commands Section 5-3
Page 81
71
4010-01 02 03 04 05 06 07 08 4018-12 34 56
Displays all of the data from the base address to the specified address.
4. Enter: *.3000
Displayed: 401B-78
If the “period” address format is used and the entered address is lower than
the base address, the contents of the specified address will not be dis­played. The contents of the base address will be displayed instead.
5. Enter: *3000:9 8 7 6 5 4 3 2 1
*3000.3007
Displayed: 3000-09 08 07 06 05 04 03 21
Pokes data in a series of addresses starting from the specified
address.
6. Enter: *:11 22 33 44 55
*3000.3007
Displayed: 3000-11 22 33 44 55 04 03 21
Pokes data in a series of addresses starting from the base address.
Move Command
Purpose
: To transfer the data stored in a consecutive range of addresses
to another place in memory
Format
: M(destination start address)< (source start address). (source
end address)
Remarks
:
This command will transfer a block of data starting from (source start ad­dress) and ending at (source end address) to (destination start address). Note that the source address range must not overlap the destination address range; otherwise, the data will not be transferred correctly.
Example
:
Enter: *M3000<4000.4007
*4000.4007 Displayed: 4000-01 02 03 04 05 06 07 08 Enter: *3000.3007
Displayed: 3000-01 02 03 04 05 06 07 08 Example Remarks
:
In the above example, the contents of addresses 4000 to 4007 are trans­ferred to an address range starting at address 3000.
The following diagram illustrates correct and incorrect usage of the Move command.
Monitor Mode Commands Section 5-3
Page 82
72
Source start address
Source end address
Destination address
Source start address
Source end address
Destination address
Source start address
Source end address
Destination address
Proper Data Movement
Improper Data Movement
In this example, the source start address is smaller than the destination address and the destination address is equal to or smaller than the source end address. Consequently, the data is not transferred correctly.
Compare Command
Purpose
: To compare two blocks of data
Format
: (start address 1)<(start address 2).(end address 2)
Remarks
:
Compares the data stored from (start address 2) to (end address 2) to a block of data of the same size beginning at (start address 1). If the contents of the two address ranges differ, the corresponding address(es) where the data is not the same is displayed with its contents.
Example
:
Enter: *C3000<4000.4007
Displayed: 4003-FF (03) Enter: *3000.3007
Displayed: 3000-00 01 02 03 04 05 06 07 Enter: *4000.4007
Displayed: 4000-00 01 02 FF 04 05 06 07 Example Remarks
:
In the above example, data stored in addresses 3000 to 3007 is compared with data stored in addresses 4000 to 4007. In this example, the data stored in address 3003 has been found to differ from the data stored in address
4003. Consequently, the data stored in address 4003 (FF) and the data stored in address 3003 (03) are displayed.
Register Command
Purpose
: To display or change the contents of a register.
Format
: R(register) = (data)
Monitor Mode Commands Section 5-3
Page 83
73
(register) is one of the hardware registers: C, A, B, X, S, or P. (data) is a one or two digit hexadecimal number.
Remarks
:
If R is entered by itself, all of the registers and their contents will be dis­played.
Examples
:
1. Enter: *R
Displayed: C-C0 A-00 B-01 X-ABCD S-2EFF P-5000
The contents of all the registers are displayed.
2. Enter: *A=12
*X=FF00
*R
Displayed: C-C0 A-12 B-01 X-FF00 S-2EFF P-5000
The contents of the specified registers (A and X) are rewritten as specified.
Break Point Command
Purpose: To set a breakpoint at a specified address
Format
: BP[(address)]
Remarks
:
Up to two breakpoints can be set at the same time. If BP is entered by itself, the current breakpoint(s) will be displayed. If BP is followed by an address, a new breakpoint will be set at that address.
Examples:
1. Enter: *BP3000
Sets a breakpoint.
2. Enter: *BP
Displayed: BP=3000
Displays the currently set breakpoints.
3. Enter: *BP5000
*BP
Displayed: BP=5000 3000
Up to two breakpoints can be set.
New Command
Purpose
: To clear all breakpoints.
Format
: N
Example
:
Enter: *N
Monitor Mode Commands Section 5-3
Page 84
74
*BP
Displayed: BP=0000 0000 Example Remarks
:
Clears all the breakpoints currently set.
Disassembler Command
Purpose
: To disassemble and display 20 lines of code starting from the
specified address.
Format
: I(address)
Examples
:
1. Enter: *I 3000
Displayed: 3000-CE 10 00 LDX #$1000
3003-FF 40 00 STX $4000
3006-86 80 LDAA #$80 . . . . . .
3030-81 12 CMPA #$12
Disassembles and displays 20 lines of code starting from the specified ad-
dress.
2. Enter: *I, I
Displayed: 3032-26 02 BNE $3036
3034-A7 00 STAA $00, X
3036-39 RTS . . . .
3080-08 INX
Each time I,I is subsequently entered, the next 20 lines of code will be dis-
played.
Save Command
Purpose
: To transfer the specified block of data to port 1 in S format
Format
: S(start address).(end address)
Remarks
:
Transfers the data stored from (start address) to (end address) in S format to the port 1 buffer.
Example
:
Step 1: *S3000.300F
Step 2: Press the START/STOP switch. Example Remarks
:
Monitor Mode Commands Section 5-3
Page 85
75
The data stored from &H3000 to &H300F will be transferred to port 1. If a peripheral device other than the input terminal needs to be connected for the data transfer, follow the peripheral data transfer procedure explained at the beginning of this section.
Load Command
Purpose
: To load a data file in S format through port 1
Format
: L[(offset)]
Examples
:
1. Enter: *L
Enter: *L100
Press the START/STOP switch.
Loads a data file in S format through port 1 and stores the file in memory.
2. Enter: *3100.310F
Displayed: 3100-CE 00 00 08 26 FD 08 26
3108-FD 86 55 97 17 CE 00 00
When an offset address is specified, the loaded file is stored in memory
starting from an address whose value is the specified address plus the offset. Data transfer will not start until the ASCII Unit START/STOP switch is pressed.
Verify Command
Purpose
: To verify whether data sent through port 1 is the same as data
stored in the specified memory locations
Format: V[(offset)]
Example
:
Enter: *V100
Press the START/STOP switch. Displayed: 3120-12
Remarks
:
The input data is compared with the data stored in the specified address range. The base address for data comparison is the specified address plus the offset.
If a discrepancy is found, the address at which it occurs and the data con­tained therein are both displayed. Data will not be verified until the ASCII Unit START/STOP switch is pressed.
If a peripheral device other than the input terminal needs to be connected for data transfer, follow the peripheral data transfer procedure explained at the beginning of this section.
Go Command
Purpose
: To execute a program
Format
: G[(address)]
Monitor Mode Commands Section 5-3
Page 86
76
Example: Enter: *I3000
Displayed: 3000-86 80 LDAA #$80
3002-B7 40 00 STAA $4000
3005-20 F9 BRA $3000 Enter: *BP3005
*G3000 Displayed: C-C8 A-80 B-FF X-0000 S-2EFF P-3005
Remarks
:
If an address is specified, the user program is executed starting from that address. If no address is specified, execution will start from the address indi­cated by the program counter.
If program execution is aborted due to a breakpoint, SW1, or an interrupt, the register contents will be displayed.
If the stack pointer is not set to the assembly language area, this command will not execute correctly.
Step Command
Purpose
: To execute a program one step at a time. This command is used
for debugging.
Format
: T[(address)]
Example
:
Enter: *T3000
Displayed: 3000-86 80 LDAA #$80
C-C8 A-80 B-00 X-0000 S-2EFF P-3002 Remarks
:
When (address) is specified, the instruction stored starting at (address) is executed. If (address) is not specified, the instruction stored at the address indicated by the program counter is executed. To execute several program steps, execute the Step command as many times as required.
When Step is executed, the instruction stored at the specified address is dis­played as well as the contents of all the hardware registers.
Mini-Assembler
Purpose
: To assemble one line of the program at a time.
Procedure
:
1, 2, 3... 1. Key in CTRL+A
2. Type in one line of code and a carriage return.
3. To stop, key in X followed by a carriage return. Remarks
:
Keying-in CTRL+A puts the monitor in mini-assembler mode. Each time a line of code followed by a carriage return is subsequently entered, the mini-
Monitor Mode Commands Section 5-3
Page 87
77
assembler will assemble and display it. To exit mini-assembler mode enter “x” followed by a carriage return.
Example
:
Enter: *CTRL+A
!3000:LDA #$80 Displayed: 3000-86 80 LDAA #$80 Enter: ! LDAB #$7F
Displayed: 3002-C6 7F LDAB #$7F Enter: ! STD $4000
Displayed: 3004-FD 40 00 STD $4000 Enter: ! ASLA
Displayed: 3007 48 ASLA Enter: ! BNE $3000
Displayed: 3008 26 F6 BNE $3000 Enter: !X
Arithmetic Using Hexadecimal
Purpose
: To add or subtract 4-digit hexadecimal data.
Format
: (hex data)+(hex data)
(hex data)-(hex data)
Examples
:
Enter: *1234+5678
Displayed: 1234+5678=68AC Enter: *ABCD+EF01
Displayed: ABCD+EF01=9ACE Enter: *AB-12
Displayed: AB-12=0099
Monitor Mode Commands Section 5-3
Page 88
79
SECTION 6
Program Examples
This section presents examples of data transfer routines written for both the PC and the ASCII Unit. In some cases, both a PC and an ASCII Unit Program are necessary for data transfer. In other cases only an ASCII Unit Program is necessary.
Both PC and ASCII Unit Programs necessary
:
Whenever the PC PUT or PC GET statements are used.
Whenever the PC READ and PC WRITE statements are used without
the Memory Area Designator (@).
Only ASCII Unit Program is necessary
:
Whenever the PC READ and PC WRITE statements are used with
the Memory Area Designator (@).
In some of the program examples, there are two versions of the ASCII Unit Program; one runs in conjunction with a PC data transfer routine and the other runs independently of a PC program.
The purpose of the second part of this section is to give a step-by-step explanation of what the ASCII Unit and PC are doing during execution of their respective programs. This is presented under the heading “execution sequence.”
The last part of this section presents an Assembly Language program example. Refer to Appendix G Reference Tables for a table listing all the program examples and their page numbers.
6-1 Example Programs 80. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6-2 Execution Sequence 94. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6-3 Assembly Language Example 102. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Page 89
80
6-1 Example Programs
This section presents examples of data transfer routines written for both the PC and the ASCII Unit. The examples illustrate how the two programs work together to transfer data. Some of the examples have two ASCII Unit rou­tines; the first one runs in conjunction with a PC routine and the second one runs independently of the PC and does not require a PC program.
Throughout this section, the following is assumed: Unit no. : 0 Data area of PC: DM
Example 1a
Purpose: To transfer data from the PC to the ASCII Unit using the PC
READ statement
MOV(21) #0005 101
Transfer base word (DM 0000)
10001
MOV(21) #0000 102
PC Program
ASCII Unit Program
Execution statement
10300
ASCII busy
specifies the number of words to be transferred
specifies the base word for data transfer
WRITE flag
PC READ “5I4”; A,B,C,D,E
Number of words to be transferred Word n+1
Word n+2 (where n= 100 +10 x unit no.)
A B
C D
AB CD
Remarks
:
In this example, when the execution statement flag is set, the data stored in words 0000 to 0004 is written to the ASCII Unit after the WRITE flag (word n bit 01) has been set.
When the ASCII Unit executes the PC READ statement, five specified words are read by the BASIC program, converted into BCD and assigned to the variables A through E. During execution of the PC READ statement, the ASCII Unit busy flag (word n+3 bit 00) is set. When execution is complete, the busy flag is cleared.
Example 1b
Purpose
: To use the ASCII Unit PC READ statement to specify and read
data from the PC independently of the PC program
This example does not require a PC data transfer routine.
Example Programs Section 6-1
Page 90
81
ASCII Unit Program PC READ “@D,0,5,5I4”; A,B,C,D,E Remarks
:
The above PC READ “@...” statement accesses the PC DM memory area when the user specifies “@D” as its first argument. When the ASCII Unit ex­ecutes the above PC READ “@...” statement, five words are read by the BA­SIC program starting from DM word 0000, converted into BCD and assigned to the variables A through E. During execution of the PC READ “@...” state­ment, the busy flag (word n+3 bit 00) is set.
Example 2a
Purpose
: To write data to the PC using the PC WRITE statement
MOV(21) #0003 101
10002
MOV(21) #0010 102
PC Program ASCII Unit Program
Execution statement
10300
ASCII busy
READ flag
PC WRITE “3I4”; P,Q,R
Sets the number of words to be transferred
Sets the base word number
Transfer base word (DM 0010)
Number of words to be transferred Word n+1
Word n+2 (where n = 100 +10 x unit no.)
AB CD
A B
C D
Remarks
:
In the above program, when the execution statement flag is set, data is writ­ten to PC DM words 0010, 0011, and 0012 after the READ flag (word n bit
02) is set. When the ASCII Unit executes the PC WRITE statement, variables P, Q, and
R are converted into BCD and stored in the specified DM addresses. During execution of the PC WRITE statement, the ASCII busy flag (word n+3
bit 00) is set. When execution is complete, the busy flag is cleared. The PC WRITE statement is not executed until the PC READ flag is set.
Example 2b
Purpose
: To use the ASCII Unit PC WRITE statement to specify and write
data to the PC DM area independently of the PC program
This example does not require a PC data transfer routine. ASCII Unit Program
PC WRITE “@D,10,3,3I4”;P,Q,R
Example Programs Section 6-1
Page 91
82
Remarks: When the ASCII Unit executes the PC WRITE “@...” statement, the variables
P, Q, and R are converted into BCD and stored in DM words 0010, 0011, and
0012. During PC WRITE execution, the busy flag (word n+3 bit 00) is set.
Example 3
Purpose
: To print data at fixed time intervals using the LPRINT statement
This example does not require a PC data transfer routine. ASCII Unit Program
:
100 TH$ = MID$(TIME$,1,2) 110 IF TH$ = TH0$ GOTO 200 120 TH0$ = TH$ 130 LPRINT TIME$,A
Remarks
:
This program example prints a value (A) and the present time (TIME$) on a printer every hour on the hour. The PRINT statement is executed when the “hours” change on the internal clock (for example, when the time changes from 9:59 to 10:00). The clock (24-hour) must be set prior to program execu­tion.
Example 4a
Purpose
: To transfer data from the keyboard to the PC using the BASIC
“INPUT” statement
10 OPEN #2, “KYBD:” 20 INPUT #2,A$ 30 PC WRITE “2A3”;A$
MOV #0002 101
10002
MOV #0020 102
PC Program ASCII Unit Program
Execution statement
10300
ASCII busy
READ flag
specifies the number of words to be transferred
specifies the number of words to be transferred
specifies the transfer base word
Transfer base word (DM 0020)
Number of words to be transferred Word n+1
Word n+2 (where n = 100 +10 x unit no.)
AB CD
A B
C D
Remarks
:
In this example, “2A3” means that the low order byte of the first word and the high order byte of the second word are written.
In this example, data is entered from a keyboard connected to port 2 of the ASCII Unit and then written to the PC using the PC WRITE statement. Two
Example Programs Section 6-1
Page 92
83
PC words are used to store the data, which consists of four characters (two characters per word).
When the execution statement flag is set, the data is stored in DM words 0020 and 0021.
The ASCII Unit OPENs port 2 as the keyboard, and stores the entered char­acters as a character string, A$. The character string is terminated with a car­riage return.
Example 4b
Purpose
: To use the PC WRITE statement to specify and write data to the
PC DM area
This example does not require a PC data transfer routine. ASCII Unit Program
:
10 OPEN #2,“KYBD:” 20 INPUT #2,A$ 30 PC WRITE “@D,20,2,2A3”;A$
Remarks
:
When the PC WRITE “@...” statement is executed, the first four characters of character string A$ are converted into ASCII code and stored in DM words 0020 and 0021.
During PC WRITE “@...” execution, the busy flag (word n+3 bit 00) is set.
Example 5
Purpose
: To control the ASCII Unit from the PC using the ON PC state-
ment
50 ON PC 3 GOSUB 200 60 ON PC 4 GOSUB 300 70 PC ON
200 A = 1234:RETURN 300 A = 2345:RETURN
10001
PC Program ASCII Unit Program
Execution statement
WRITE flag
MOV
#0030
100
Remarks: In this example, the PC controls execution of the ASCII Unit by means of an
interrupt. When the ASCII Unit ON PC GOSUB statement is executed (the PC ON
statement must be executed to enable the interrupts ) the PC can then inter­rupt the ASCII Unit. Each interrupt generated by the PC has a unique inter­rupt number associated with it. This number is written to the ASCII Unit Pro­gram and causes branching to a corresponding interrupt service routine. In the above example, the unique interrupt number is 3, causing a branch to line 200 of the BASIC program.
Example Programs Section 6-1
Page 93
84
Example 6
Purpose
: To direct execution of the ASCII Unit from the PC using the PC
GET statement
Another way to externally control program execution is through polling. Poll­ing is the process of continuously checking the value of a specified bit or word. If the value of the bit or word matches a condition set in the program, a corresponding branch instruction is executed.
In the following program, the ASCII Unit PC GET statement is used to poll a specific word of the PC.
10 PC GET I, J 20 K = J AND 3 30 IF K = 1 GOTO 100 40 IF K = 2 GOTO 200 50 IF K = 3 GOTO 300 60 GOTO 10
10008
PC Program ASCII Unit Program
Specification 1
Specification 3
Specification 2
Specification 3
10009
Remarks: The PC GET statement reads bits 10008 to 10015 of the PC as a word. The
word is logically “ANDed” with 3 (00000011) and the result of this operation is used to branch the program. When bit 10008 is set, k will be equal to 1 and the program will branch to line 100. If bit 10009 is set, k will be equal to 2 and the program will branch to line 200.
Example 7
Purpose
: To control execution of the PC from the ASCII Unit using the PC
PUT statement
Using the PC PUT statement, the ASCII Unit can write data to word n+3 bits 08 through 15 of the PC. If the value of this data matches a condition set in the PC program, a corresponding branch instruction will be executed.
PC Program ASCII Unit Program
Execution statement
10308
10309
10310
Process 1
Process 2
Process 3
10 INPUT A 20 PC PUT A
Remarks:
Example Programs Section 6-1
Page 94
85
In the above program, the ASCII Unit accepts external input from a keyboard using the INPUT statement and transfers that data to the PC with the PC PUT statement.
If the number “1” is input, bit 10308 of the PC is set, directing process (1) to be executed.
Example 8a
Purpose
: To read and print PC data at specific times using the ASCII Unit
PC READ statement
MOV #0001 101
10001
MOV #0000 102
PC Program ASCII Unit Program
Execution statement
10300
ASCII busy
WRITE flag
10 OPEN #2,“LPRT:(47)” 20 A$ = “00:00”:B$ = “ “ 30 C$ = MID$ (TIME$,4,5) 40 IF C$<>A$ GOTO 30 50 D$ = LEFT$ (TIME$,2) 60 IF D$ = B$ GOTO 30 70 B$ = D$ 80 PC READ “I4”;X 90 PRINT #2,“DM = “;X
100 GO TO 30
Remarks: The printer should be connected to port 2. The baud rate should be set to
4,800 baud.
Example 8b
Purpose
: To read and print PC data at specific times using the ASCII Unit
PC READ(@...) statement
This example does not require a PC data transfer routine. ASCII Unit program
:
10 OPEN #2,“LPRT:(47)” 20 A$ = “00:00”:B$ = “ “ 30 C$ = MID$ (TIME$,4,5) 40 IF C$<>A$ GOTO 30 50 D$ = LEFT$ (TIME$,2) 60 IF D$ = B$ GOTO 30 70 B$ = D$ 80 PC READ “@D,0,1,I4”;X 90 PRINT #2,“DM = “;X
100 GO TO 30
Example 9a
Purpose
: To accept input from the keyboard and write it to the PC using
the PC WRITE statement
Example Programs Section 6-1
Page 95
86
MOV #0001 101
10002
MOV #0000 102
PC Program ASCII Unit Program
Execution statement
10300
ASCII busy
READ flag
10 INPUT I 20 PC WRITE “I4”; I 30 GOTO 10
Remarks: Product codes stored in DM memory are replaced by data input through a
keyboard. The data is represented as 4-digit hexadecimal numbers.
Example 9b
Purpose
: To accept input from the keyboard and write it to the PC using
the PC WRITE(@...) statement
ASCII Unit Program
:
10 INPUT I 20 PC WRITE “@D,0,1,I4”;I 30 GOTO 10
Example 10
Purpose
: To retrieve and print several types of data from the PC using the
PC GET statement
Example Programs Section 6-1
Page 96
87
10 OPEN #2,“LPRT:(47)” 20 PC READ “2I4” ;X,Y 30 PC GET I, J 40 IF J = 1 THEN GOTO 100 50 IF J = 2 THEN GOTO 200 60 GOTO 30
100 PRINT #2,“DATA1 = “;X
200 PRINT #2,“DATA2 = “;Y
MOV #0002 101
10001
MOV #0000 102
PC Program ASCII Unit Program
10300
ASCII busy
WRITE flag
MOV #0100 100
MOV #0200 100
SW1
Start
SW1
Remarks: Two lot size areas, stored in PC DM words 0000 and 0001, are retrieved and
printed. Connect the printer to port 2 and set the baud rate to 4,800 bps.
Example 11
Purpose
: To use PC interrupts to direct execution of the ASCII Unit
Example Programs Section 6-1
Page 97
88
MOV #0030 100
PC Program ASCII Unit Program
WRITE flag
MOV #0010 100
MOV #0020 100
Start 1 Start 2 Start 3
Start 1 Start 2 Start 3
Start 1 Start 2 Start 3
Start 1 Start 2 Start 3
Start 1 Start 2 Start 3
Start 1 Start 2 Start 3
10 OPEN #2,“LPRT:(47)” 20 ON PC 1 GOSUB 100 30 ON PC 2 GOSUB 200 40 ON PC 3 GOSUB 300 50 PC ON 60 GOTO 60
70 PC READ “@D,0,1,I4”;X1 80 PRINT #2,“DM0 = “;X1 90 RETURN
200 PC READ “@D,10,2,2I4”;X1,X2 210 PRINT #2,“DM10 = “;X1 220 PRINT #2,“DM11 = “;X2 230 RETURN
300 PC READ “@D,100,3,3I4”;X1,X2,X3 310 PRINT #2,“DM100 = “;X1 320 PRINT #2,“DM101 = “;X2 330 PRINT #2,“DM102 = “;X3 340 RETURN
10001
Remarks: Three ON PC GOSUB statements are used to direct program execution to
three different interrupt service routines. After the branch destinations are defined by the ON PC GOSUB statements, the ON PC statement is executed enabling the interrupts. The statement “GOTO 60” at line 60 causes the pro­gram to wait for a PC interrupt to initiate further action.
If PC interrupt 1 interrupts the ASCII Unit, the contents of DM word 0000 will be printed. If PC interrupt 2 interrupts the ASCII Unit, the contents of DM words 0010 and 0011 will be printed. If PC interrupt 3 interrupts the ASCII Unit, the contents of DM words 0100, 0101, and 0102 will be printed.
Connect the printer to port 2 and set the baud rate to 4,800 bps. The lot sizes are stored in DM words as follows:
Example Programs Section 6-1
Page 98
89
DM0000 DM0010
DM0011
DM0100
DM0101
DM0102
122
Lot size Lot size
Lot size
Lot size
Lot size
Lot size
Example 12
Purpose
: To print PC data and the time of data transfer
MOV #0002 101
10001
MOV #0100 102
PC Program ASCII Unit Program
Start 10300
ASCII busy
WRITE flag
10 OPEN #2,“LPRT:(47)” 20 PC READ “2I4”;D1,D2 30 PRINT #2,“DATA1 = “;D1,
“DATA2=“;D2,”TIME= “;TIME$
40 GOTO 20
Remarks: PC data and the time of transfer are output to a printer connected to port 2 of
the ASCII Unit. The PC read statement is used to obtain the data from the PC.
Output:
DATA1 = 5678
DATA1 = 3249
DATA2 = 9876
DATA2 = 12
TIME = 13:45:03
TIME = I4:02:51
Example 13
Purpose: To display the state of PC bit 1000 on a display device con-
nected to port 2
This example does not require a PC data transfer routine.
Example Programs Section 6-1
Page 99
90
ASCII Unit Program:
10 OPEN #2,“SCRN:(40)” 20 PC READ “@R,10,1,B0”;R 30 IF R = 0 THEN RS$ = “OFF”
ELSE RS$ = “ON”
40 PRINT #2,“RELAY = “;RS$
Remarks
:
The PC READ “@...” statement is used with “@R” as the first argument di­recting the read statement to obtain the data from the PC Relay memory area.
Example 14
Purpose
: To input data from a bar code reader using the PC WRITE state-
ment
Remarks
: Connect the bar code reader to port 2.
STX Data 1 ETXData 2 Data 3 Data 4 Data 5 Data 6 Data 7 Data 8 Data 9 Data 10
The following figure defines the output format of the bar code reader.
PC Program
:
DM000 DM001
Data 1
Data 3 DM002 DM003
Data 5
Data 7 DM004 Data 9
Data 2 Data 4 Data 6 Data 8
Data 10
ASCII Unit Program : 10 OPEN #2,“COMU:(22)”
20 A$ = INPUT$ (1,#2) 30 IF A$ = CHR$(2) GOTO 50 40 GOTO 20 50 B$ = INPUT$(11,#2) 60 IF CHR$(3) = RIGHT$ (B$,1)
THEN B$ = MID$(B$,1,10)
ELSE GOTO 20 70 PC WRITE “@D,0,5,5A3”;B$ 80 GOTO 20
Note For details on the COMU statement, refer to the description of the OPEN
statement in Section 4-2-4 Device Control Statements.
Example 15
Purpose
: To read data from an input file through a com port
This example does not require a PC data transfer routine. ASCII Unit Program
10 CLEAR 1000
100 OPEN #1,“COMU:”
Example Programs Section 6-1
Page 100
91
110 OPEN #2,“COMU:” 120 ON COM1 GOSUB 1000 130 ON COM2 GOSUB 2000
I40 COM1 ON:COM2 ON
150 GOTO 150
1000 A = LOC(1) 1010 IF A<>0 THEN
A$ = A$+INPUT$(A,#1) 1020 RETURN 2000 B = LOC(2) 2010 IF B<>0 THEN
B$ = B$+INPUT$(B,#2) 2020 RETURN
Example 16
Purpose
: To initiate data transfer with the START switch using the WAIT
statement
MOV #0005 101
10001
MOV #0000 102
PC Program ASCII Unit Program
Start 10300
ASCII busy
WRITE flag
100 PRINT “START”
110 WAIT “10:00.0”,1000 120 PC READ “5I4”;A,B,C,D,E 130 PRINT A,B,C,D,E
I40 END 1000 PRINT “ERROR READY? Y/N” 1010 F$ = INKEY$ 1020 IF F$ = “Y” THEN 100 1030 IF F$ = “N” THEN END
ELSE 1010
Remarks: Pressing the PC START switch will cause specified PC data to be transferred
to the ASCII Unit and displayed on the monitor. When the program is ex­ecuted the message “Ready” will be displayed on the screen. If the START switch is not pressed within ten minutes, an error message will be displayed.
Example Programs Section 6-1
Loading...