'---------------------------------------------------------------------------------------- ' XPort - new I/O functions - ePort compatible, replaces the ePort system '---------------------------------------------------------------------------------------- ' Name: XIN_XOUT_NEW_DEMO_001.TIG ' Type: Tiger-BASIC(tm) Source-Code ' Purpose: Short Demo for new functions of XOUT / XIN - Version 5.01c or higher ' ' (C) - Copyright Wilke Technology GmbH, 52070 Aachen, Germany '---------------------------------------------------------------------------------------- ' ' Thank you for using BASIC Tigers in your products. If you have questions, ideas ' or special needs, please contact your next distributor or the Tiger support team ' and visit our web site: ' ' Wilke Technology GmbH ' The Tiger Support Team ' P.O.Box 1727, D-52018 Aachen, Germany ' Krefelder Str. 147, D-52070 Aachen, Germany ' ' email: support@wilke-technology.com (english) ' email: support@wilke.de (german) ' Phone: +49 (241) 918 900 Mo to Fr, 7:00 to 16:00 (GMT) ' Fax: +49 (241) 918 9068 ' ' New information, new drivers and free downloads see: ' ' www.wilke-technology.com (english) ' www.wilke.de (german) ' ' Sincerely, ' ' Your Tiger Support Team ' '---------------------------------------------------------------------------------------- ' ' Set BUS-/CTRL-ports and bit nos. of the XPort system (optional) ' ' ' OK_FLAG = XSETUP (BUS_PORT, CTRL_PORT, BIT_ACLK, BIT_DCLK, BIT_INE, CTRL2_PORT, BIT_BUS_CE) ' ' ' After ' Power-On Description ' ' BUS_PORT P6 Port which is used as 8-bit DATA/ADDR bus: 6 or 8 ' CTRL_PORT P3 Port which is used as 3-bit CTRL bus ' BIT_ACLK L33 Bit no.: 0...7 for ACLK: Address clock ' BIT_DCLK L34 Bit no.: 0...7 for DCLK: DATA clock ' BIT_INE L35 Bit no.: 0...7 for -INE: Input-Enable (low active) ' ' CTRL2_PORT P4 Port which is used for CE signal by XBUS_OUTR / XBUS_INR ' BIT_BUS_CE L40 Bit no.: 0...7 for BUS_CE: BUS access CE signal ' This signal is set active by the Tiger (meaning INVERTED ' opposing the initial level) which XBUS access is performed. ' With this the other unit knows that a BUS transmission ' takes place. ' ' Further signals, like e.g. the DATA direction can be defined ' and operated by the user in the BASIC program if needed. ' ' Note: During an XBUS access, other device drivers (LCD1, LCD2, ' parallel IN / OUT, ... etc.) can also use this bus. A ' running XBUS transmission will be interrupted by such ' a request (XBUS_CE is set "inactive" during this time). ' After that the XBUS transmission is continued. ' ' ' OK_FLAG: 0 = OK, 1...5 = faultive parameters ' '---------------------------------------------------------------------------------------- ' New, additional functions for XOUT + XIN instructions '---------------------------------------------------------------------------------------- ' ' Output 1 address byte + 1 data byte from BYTE, WORD or LONG variable: ' ' XOUT (ADDR, BYTE_VALUE) ' ==> ADDR, DATA_BYTE ' XOUT (ADDR, WORD_VALUE) ' ==> ADDR, DATA_BYTE (low order byte) ' XOUT (ADDR, LONG_VALUE) ' ==> ADDR, DATA_BYTE (low order byte) ' '........................................................................................ ' ' Output a number of addresses + data bytes from string: ' ' XOUT (ADDR, STRING$) ' ==> ADDR, data, ADDR+1, data, ADDR+2, data, ADDR+3, data ... ' ' ==== ====== ====== ====== ' Note: !!! limit to ADDR 255 max !!! ' ' ' XOUT (-ADDR, STRING$) ' ==> ADDR, DATA, DATA, DATA, DATA, ... (only 1 ADDR, followed by data) ' ' ==== ' ' ' XOUT (256+, STRING$) ' ==> DATA, DATA, DATA, DATA, DATA, DATA ... (NO addr, only data) ' ' ' XOUT (ADDR, "") ' ==> ADDR (NO data, only ADDR) ' ' ==== ' '........................................................................................ ' ' Output a number of addresses + data bytes from DATA FLASH area: ' ' XOUT (ADDR, FLASH_ADDR, LEN) ' Get data from FLASH and write to XPort(s) - as ' ' in case of string (see above) ' XOUT (-ADDR, FLASH_ADDR, LEN) ' Get data from FLASH and write to XPort(s) - as ' ' in case of string (see above) ' '---------------------------------------------------------------------------------------- ' ' RES$ = XIN$ (ADDR, NO) ' ==> ' ' ==== ====== ====== ' ' RES$ = XIN$ (-ADDR, NO) ' ==> ' ' ==== ' ' Note: only 1 address ==> new from: 24-Sept-2002 ' ' RES$ = XIN$ (256+, NO) ' ==> ' ' Note: no address at all ==> new from: 24-Sept-2002 ' '---------------------------------------------------------------------------------------- TASK MAIN ' Begin task MAIN LONG ADDR,R ' STRING LARGE$, SMALL$(5) ' ' addr, src data, offs, len, mode R = POKEM_FLASH (0, "AA 55 F0 0F"%, 0, 4, 2) ' Write bytes into DATA area of FLASH LOOP 999999999 ' Many loops ' ADDR,NO LARGE$ = XIN$ (0FEH,12) '=> ... limit to MAX ADDR = FFh LARGE$ = XIN$ (018H,12) '=> SMALL$ = XIN$ (018H,12) '=> ... limit to MAX len of String = 5 SMALL$ = XIN$ (018H, 0) '=> ... limit to MAX len of String = 5 ' ==== ====== ====== LARGE$ = XIN$ (-55H,12) '=> SMALL$ = XIN$ (-55H,12) '=> SMALL$ = XIN$ (-55H, 0) '=> ' ==== LARGE$ = XIN$ (256,12) '=> --> ADDR=256(+) --> do NOT issue an ADDR LARGE$ = XIN$ (256,0) '=> --> ADDR=256(+) --> do NOT issue an ADDR ENDLOOP ADDR = 253 LOOP 999999999 ' Many loops XOUT (-ADDR, 0, 16) ' Data from FLASH to XPort(s): ==> ADDR, data, data, data, data, ... XOUT ( ADDR, 0, 16) ' Data from FLASH to XPort(s): ==> ADDR, data, ADDR+1, data, ADDR+2, data, ... WAIT_DURATION 5 ' Wait 5 ms ENDLOOP ' ADDR = 77H ' LOOP 999999999 ' Many loops XOUT (-ADDR, "01 03 07 0F 1F"%) ' ==> ADDR, data, data, data, data, data, data, ... XOUT ( ADDR, "01 03 07 0F 1F"%) ' ==> ADDR, data, ADDR+1, data, ADDR+2, data, ... ' ==== ====== ====== WAIT_DURATION 100 ' Wait 100 ms ' ENDLOOP ' ' LOOP 999999999 ' Many loops XOUT ( ADDR, "") ' ==> ADDR - Send only ADDR (1 byte: 00...FF) WAIT_DURATION 5 ' Wait 5 ms ' ENDLOOP ' LOOP 999999999 ' Many loops XOUT ( 255, "01 03 07 0F 1F"%) ' ==> 1 ADDR + 1 data byte ==> limited by max addr = 255 in X-Port system XOUT ( 254, "01 03 07 0F 1F"%) ' ==> 2 ADDRs + 2 data bytes ==> limited by max addr = 255 in X-Port system WAIT_DURATION 50 ' Wait 50 ms ENDLOOP ' LOOP 999999999 ' Many loops XOUT ( 256, "01 03 07 0F 1F"%) ' Only: Send bytes of string (Data) and N O A D D R WAIT_DURATION 50 ' ENDLOOP ' ADDR = 77H ' LOOP 999999999 ' Many loops LOOP 22 ' 22 times XOUT (-ADDR, "01 03 07"%) ' Send only 1 ADDR + n DATA ==> ADDR, DATA, DATA, DATA, DATA ... WAIT_DURATION 10 ' Wait 10 ms ==== ENDLOOP ' LOOP 22 ' 22 times XOUT ( ADDR, "01 03 07"%) ' ==> ADDR, data, ADDR+1, data, ADDR+2, data ' ==== ====== ====== WAIT_DURATION 10 ' Wait 10 ms ENDLOOP ' ENDLOOP ' END ' End of task MAIN