Home » Archimedes archive » Acorn Computing » 1993 07 Mega Disk.adf » 93_07 » DataVision/!DataVis/!dvPort

DataVision/!DataVis/!dvPort

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn Computing » 1993 07 Mega Disk.adf » 93_07
Filename: DataVision/!DataVis/!dvPort
Read OK:
File size: 0E95 bytes
Load address: 0000
Exec address: 0000
File contents
   10 REM > $.!DataVis.!dvPort
   15SYS "Wimp_CommandWindow",-1
   20 ON ERROR GOTO 860
   30 MODE 15:COLOUR 180:CLS:OSCLI"Pointer"
   40 OFF
   50 selection%=0:fg%=180:DIM menu$(3)
   60 REPEAT
   70 PROCmenu
   80 IF selection%=1 THEN PROCimport
   90 IF selection%=2 THEN PROCexport
  100 UNTIL selection%=3
  110 PROCQuit
  120 END
  130 
  140 DEFPROCmenu
  150 PRINT TAB(20,2);"DataVision File Import/Export Utility"
  160 menu$(1)="Import Data"
  170 menu$(2)="Export Data"
  180 menu$(3)="Quit"
  190 PROCwindow(29,4,18,3)
  200 PROCselection(30,5,3,15)
  210 ENDPROC
  220 
  230 DEFPROCimport
  240 CLS
  250 PRINTTAB(2,2);"Import Data"
  260 PROCwindow(2,4,40,2)
  270 PRINTTAB(3,5);"Source Filename:";TAB(3,6);"Destination Filename:"
  280 PROCtext(25,5,10):source$=text$
  290 PROCtext(25,6,10):dest$=text$
  300 pointer$=dest$+"N":fp=OPENUPFNFile(pointer$):INPUT#fp,dir$:CLOSE#fp
  310 REM OSCLI("dir <DataVision$Dir>"+dir$)
  320 dictionary$="<DataVision$Dir>"+dir$+"."+dest$+"A"
  330 dirdest$ = "<DataVision$Dir>"+dir$+"."+dest$
  340 fp1=OPENUPdictionary$
  350 PTR#fp1=0:INPUT#fp1,nof$:PTR#fp1=5:INPUT#fp1,nor$:PTR#fp1=15:INPUT#fp1,reclen$:nof%=VAL(nof$):nor%=VAL(nor$):reclen%=VAL(reclen$):IF nor%=0 THEN fp2=OPENOUT(dirdest$):ELSE fp2=OPENUP(dirdest$)
  360 field%=1:recno%=(nor%+1):field$=""
  370 OSCLI("exec <DataVision$Dir>."+source$)
  380 char$=INKEY$(0)
  390 REPEAT
  400   IF char$<>CHR$(13) THEN
  410     field$=field$+char$
  420   ELSE
  430     PROCstorefield
  440     field%=field%+1:field$=""
  450     IF field%>nof% THEN PRINTTAB(30,21);"Imported Record ";recno%;"  ":field%=1:recno%=recno%+1
  460   ENDIF
  470   char$=INKEY$(0)
  480 UNTIL char$=""
  490 PTR#fp1=5:PRINT#fp1,STR$(recno%-1):CLOSE #0
  500 CLS
  510 ENDPROC
  520 
  530 DEFPROCstorefield
  540 PTR#fp1=(field%-1)*61+104:INPUT#fp1,length$:PTR#fp1=(field%-1)*61+109:INPUT#fp1,totinp$
  550 IF LEN(field$)>VAL(length$) THEN field$=LEFT$(field$,VAL(length$))
  560 PTR#fp2=(recno%-1)*reclen%+VAL(totinp$):PRINT#fp2,field$
  570 VDU 26
  580 ENDPROC
  590 
  600 DEFPROCexport
  610 CLS
  620 PRINTTAB(2,2);"Export Data"
  630 PROCwindow(2,4,40,2)
  640 PRINTTAB(3,5);"Source Filename:";TAB(3,6);"Destination Filename:"
  650 PROCtext(25,5,10):source$=text$
  660 PROCtext(25,6,10):dest$=text$
  670 pointer$=source$+"N":fp=OPENUPFNFile(pointer$):INPUT#fp,dir$:CLOSE#fp
  680 REM OSCLI("dir <DataVision$Dir>"+dir$)
  690 dictionary$="<DataVision$Dir>"+dir$+"."+source$+"A"
  700 fp1=OPENUPdictionary$:fp2=OPENUP("<DataVision$Dir>"+dir$+"."+source$)
  710 PTR#fp1=0:INPUT#fp1,nof$:PTR#fp1=5:INPUT#fp1,nor$:PTR#fp1=15:INPUT#fp1,reclen$:nof%=VAL(nof$):nor%=VAL(nor$):reclen%=VAL(reclen$)
  720 VDU 28,0,31,79,10
  730 OSCLI("spool <DataVision$Dir>."+dest$)
  740 FOR recno%=1 TO nor%
  750     FOR field%=1 TO nof%
  760         PTR#fp1=(field%-1)*61+109:INPUT#fp1,totinp$
  770         PTR#fp2=(recno%-1)*reclen%+VAL(totinp$):INPUT#fp2,field$
  780         PRINT field$+"  "
  790     NEXT field%
  800 NEXT recno%
  810 OSCLI("spool"):CLOSE#fp1:CLOSE#fp2
  820 VDU 26
  830 CLS
  840 ENDPROC
  850 
  860 REM Error Handler
  870 IF ERR = 17 THEN PROCQuit
  880 VDU 26:CLS
  890 PRINTTAB(2,2);"Error in ";:IF selection%=1 THEN PRINT"Import ";:ELSE PRINT"Export ";
  900 PRINT "procedure:"'
  910 PRINTTAB(2,3);REPORT$;" at line ";ERL
  920 PRINT TAB(20,30);"Press any mouse button to exit back to menu"
  930 OSCLI "FX15":REPEAT:MOUSE mx%,my%,mb%:UNTIL mb% <>0
  940 PROCQuit
  950 
  960DEFPROCwindow(x,y,w%,l%)
  970PRINTTAB(x,y);CHR$(154);STRING$(w%,CHR$(159));CHR$(158):FORI=y+1TOy+l%:PRINTTAB(x,I);CHR$(155);STRING$(w%," ");CHR$(157):NEXTI:PRINTTAB(x,y+l%+1);CHR$(156);STRING$(w%,CHR$(160));CHR$(161)
  980ENDPROC
  990DEFPROCtext(X,Y,L%)
 1000T$="":PT=0
 1010IFPT<L%THENPRINTTAB(X,Y);CHR$(255)
 1020IN=GET:IFIN=13THENPRINTTAB(X,Y);" ":GOTO1080
 1030IFIN=127THEN 1060
 1040IFPT=L%THEN 1020
 1050PRINTTAB(X,Y);CHR$(IN):PT=PT+1:T$=T$+CHR$(IN):X=X+1:GOTO1010
 1060IFPT=0THEN 1020
 1070PRINTTAB(X,Y);" ":X=X-1:PT=PT-1:T$=LEFT$(T$,PT):GOTO1010
 1080text$=T$:ENDPROC
 1090DEFPROCselection(X,Y,L%,W%):ED%=Y+(L%-1):BG%=X+(W%-1):SSEL%=1
 1100FORI=1TOL%:PRINTTAB(X,Y+(I-1));"  ";menu$(I);STRING$((W%-2)-LEN(menu$(I))," "):NEXTI
 1110MOUSE XP,YP,BUT:XP=INT(XP/16):YP=31-INT(YP/32)
 1120IFYP<Y OR YP>ED%THEN 1100
 1130IFXP<X OR XP>BG%THEN 1100
 1140SEL%=(YP-Y)+1:PROCCLEA:COLOUR 131:COLOUR127:PRINTTAB(X,YP);"  ";menu$(SEL%);STRING$((W%-2)-LEN(menu$(SEL%))," "):COLOUR fg%:COLOUR127:IFBUT<>0THENGOTO1150:ELSEGOTO1110
 1150selection%=SEL%:VDU7:ENDPROC
 1160DEFPROCCLEA:IFSSEL%<>SEL%THENFORI=1TOL%:PRINTTAB(X,Y+(I-1));"  ";menu$(I);STRING$((W%-2)-LEN(menu$(I))," "):NEXTI
 1170SSEL%=SEL%:ENDPROC
 1180 
 1190DEFPROCQuit
 1200CLOSE #0
 1210SYS "Wimp_CommandWindow",-1
 1220QUIT
 1230DEF FNFile(file$)
 1240="<DataVision$Dir>."+file$

 � > $.!DataVis.!dvPort
ș "Wimp_CommandWindow",-1
 � � � �D\C
 � 15:� 180:�:�"Pointer"
( �
2$ selection%=0:fg%=180:� menu$(3)
< �
F
 �menu
P � selection%=1 � �import
Z � selection%=2 � �export
d � selection%=3
n
 �Quit
x �
� 
� ��menu
�5 � �20,2);"DataVision File Import/Export Utility"
� menu$(1)="Import Data"
� menu$(2)="Export Data"
� menu$(3)="Quit"
� �window(29,4,18,3)
� �selection(30,5,3,15)
� �
� 
�
 ��import
� �
� �2,2);"Import Data"
 �window(2,4,40,2)
< �3,5);"Source Filename:";�3,6);"Destination Filename:"
! �text(25,5,10):source$=text$
" �text(25,6,10):dest$=text$
,: pointer$=dest$+"N":fp=��File(pointer$):�#fp,dir$:�#fp
6) � OSCLI("dir <DataVision$Dir>"+dir$)
@6 dictionary$="<DataVision$Dir>"+dir$+"."+dest$+"A"
J1 dirdest$ = "<DataVision$Dir>"+dir$+"."+dest$
T fp1=�dictionary$
^� �#fp1=0:�#fp1,nof$:�#fp1=5:�#fp1,nor$:�#fp1=15:�#fp1,reclen$:nof%=�(nof$):nor%=�(nor$):reclen%=�(reclen$):� nor%=0 � fp2=�(dirdest$):� fp2=�(dirdest$)
h' field%=1:recno%=(nor%+1):field$=""
r( �("exec <DataVision$Dir>."+source$)
| char$=�(0)
� �
�   � char$<>�(13) �
�     field$=field$+char$
�   �
�     �storefield
�"     field%=field%+1:field$=""
�Y     � field%>nof% � �30,21);"Imported Record ";recno%;"  ":field%=1:recno%=recno%+1
�   �
�   char$=�(0)
� � char$=""
�# �#fp1=5:�#fp1,�(recno%-1):� #0
� �
� �
 
 ��storefield
P �#fp1=(field%-1)*61+104:�#fp1,length$:�#fp1=(field%-1)*61+109:�#fp1,totinp$
&8 � �(field$)>�(length$) � field$=�field$,�(length$))
05 �#fp2=(recno%-1)*reclen%+�(totinp$):�#fp2,field$
:	 � 26
D �
N 
X
 ��export
b �
l �2,2);"Export Data"
v �window(2,4,40,2)
�< �3,5);"Source Filename:";�3,6);"Destination Filename:"
�! �text(25,5,10):source$=text$
� �text(25,6,10):dest$=text$
�< pointer$=source$+"N":fp=��File(pointer$):�#fp,dir$:�#fp
�) � OSCLI("dir <DataVision$Dir>"+dir$)
�8 dictionary$="<DataVision$Dir>"+dir$+"."+source$+"A"
�@ fp1=�dictionary$:fp2=�("<DataVision$Dir>"+dir$+"."+source$)
�n �#fp1=0:�#fp1,nof$:�#fp1=5:�#fp1,nor$:�#fp1=15:�#fp1,reclen$:nof%=�(nof$):nor%=�(nor$):reclen%=�(reclen$)
� � 28,0,31,79,10
�' �("spool <DataVision$Dir>."+dest$)
� � recno%=1 � nor%
�     � field%=1 � nof%
�2         �#fp1=(field%-1)*61+109:�#fp1,totinp$
=         �#fp2=(recno%-1)*reclen%+�(totinp$):�#fp2,field$
         � field$+"  "
     � field%
 
 � recno%
* �("spool"):�#fp1:�#fp2
4	 � 26
> �
H �
R 
\ � Error Handler
f � � = 17 � �Quit
p � 26:�
zC �2,2);"Error in ";:� selection%=1 � �"Import ";:� �"Export ";
� � "procedure:"'
� �2,3);�$;" at line ";�
�< � �20,30);"Press any mouse button to exit back to menu"
�( � "FX15":�:ȗ mx%,my%,mb%:� mb% <>0
�
 �Quit
� 
���window(x,y,w%,l%)
�w�x,y);�(154);�w%,�(159));�(158):�I=y+1�y+l%:�x,I);�(155);�w%," ");�(157):�I:�x,y+l%+1);�(156);�w%,�(160));�(161)
��
���text(X,Y,L%)
�T$="":PT=0
��PT<L%��X,Y);�(255)
� IN=�:�IN=13��X,Y);" ":�TxD
�IN=127� �TdD
�PT=L%� �d|C
0�X,Y);�(IN):PT=PT+1:T$=T$+�(IN):X=X+1:�drC
$�PT=0� �d|C
.-�X,Y);" ":X=X-1:PT=PT-1:T$=�T$,PT):�drC
8text$=T$:�
B<��selection(X,Y,L%,W%):ED%=Y+(L%-1):BG%=X+(W%-1):SSEL%=1
LB�I=1�L%:�X,Y+(I-1));"  ";menu$(I);�(W%-2)-�(menu$(I))," "):�I
V+ȗ XP,YP,BUT:XP=�(XP/16):YP=31-�(YP/32)
`�YP<Y � YP>ED%� �DLD
j�XP<X � XP>BG%� �DLD
twSEL%=(YP-Y)+1:�CLEA:� 131:�127:�X,YP);"  ";menu$(SEL%);�(W%-2)-�(menu$(SEL%))," "):� fg%:�127:�BUT<>0��D~D:��DVD
~selection%=SEL%:�7:�
�V��CLEA:�SSEL%<>SEL%��I=1�L%:�X,Y+(I-1));"  ";menu$(I);�(W%-2)-�(menu$(I))," "):�I
�SSEL%=SEL%:�
� 
�
��Quit
�� #0
�ș "Wimp_CommandWindow",-1
�Ș
�� �File(file$)
�="<DataVision$Dir>."+file$
�
00000000  0d 00 0a 1b 20 f4 20 3e  20 24 2e 21 44 61 74 61  |.... . > $.!Data|
00000010  56 69 73 2e 21 64 76 50  6f 72 74 0d 00 0f 1e c8  |Vis.!dvPort.....|
00000020  99 20 22 57 69 6d 70 5f  43 6f 6d 6d 61 6e 64 57  |. "Wimp_CommandW|
00000030  69 6e 64 6f 77 22 2c 2d  31 0d 00 14 0f 20 ee 20  |indow",-1.... . |
00000040  85 20 e5 20 8d 44 5c 43  0d 00 1e 1c 20 eb 20 31  |. . .D\C.... . 1|
00000050  35 3a fb 20 31 38 30 3a  db 3a ff 22 50 6f 69 6e  |5:. 180:.:."Poin|
00000060  74 65 72 22 0d 00 28 06  20 87 0d 00 32 24 20 73  |ter"..(. ...2$ s|
00000070  65 6c 65 63 74 69 6f 6e  25 3d 30 3a 66 67 25 3d  |election%=0:fg%=|
00000080  31 38 30 3a de 20 6d 65  6e 75 24 28 33 29 0d 00  |180:. menu$(3)..|
00000090  3c 06 20 f5 0d 00 46 0a  20 f2 6d 65 6e 75 0d 00  |<. ...F. .menu..|
000000a0  50 1d 20 e7 20 73 65 6c  65 63 74 69 6f 6e 25 3d  |P. . selection%=|
000000b0  31 20 8c 20 f2 69 6d 70  6f 72 74 0d 00 5a 1d 20  |1 . .import..Z. |
000000c0  e7 20 73 65 6c 65 63 74  69 6f 6e 25 3d 32 20 8c  |. selection%=2 .|
000000d0  20 f2 65 78 70 6f 72 74  0d 00 64 13 20 fd 20 73  | .export..d. . s|
000000e0  65 6c 65 63 74 69 6f 6e  25 3d 33 0d 00 6e 0a 20  |election%=3..n. |
000000f0  f2 51 75 69 74 0d 00 78  06 20 e0 0d 00 82 05 20  |.Quit..x. ..... |
00000100  0d 00 8c 0b 20 dd f2 6d  65 6e 75 0d 00 96 35 20  |.... ..menu...5 |
00000110  f1 20 8a 32 30 2c 32 29  3b 22 44 61 74 61 56 69  |. .20,2);"DataVi|
00000120  73 69 6f 6e 20 46 69 6c  65 20 49 6d 70 6f 72 74  |sion File Import|
00000130  2f 45 78 70 6f 72 74 20  55 74 69 6c 69 74 79 22  |/Export Utility"|
00000140  0d 00 a0 1b 20 6d 65 6e  75 24 28 31 29 3d 22 49  |.... menu$(1)="I|
00000150  6d 70 6f 72 74 20 44 61  74 61 22 0d 00 aa 1b 20  |mport Data".... |
00000160  6d 65 6e 75 24 28 32 29  3d 22 45 78 70 6f 72 74  |menu$(2)="Export|
00000170  20 44 61 74 61 22 0d 00  b4 14 20 6d 65 6e 75 24  | Data".... menu$|
00000180  28 33 29 3d 22 51 75 69  74 22 0d 00 be 17 20 f2  |(3)="Quit".... .|
00000190  77 69 6e 64 6f 77 28 32  39 2c 34 2c 31 38 2c 33  |window(29,4,18,3|
000001a0  29 0d 00 c8 1a 20 f2 73  65 6c 65 63 74 69 6f 6e  |).... .selection|
000001b0  28 33 30 2c 35 2c 33 2c  31 35 29 0d 00 d2 06 20  |(30,5,3,15).... |
000001c0  e1 0d 00 dc 05 20 0d 00  e6 0d 20 dd f2 69 6d 70  |..... .... ..imp|
000001d0  6f 72 74 0d 00 f0 06 20  db 0d 00 fa 19 20 f1 8a  |ort.... ..... ..|
000001e0  32 2c 32 29 3b 22 49 6d  70 6f 72 74 20 44 61 74  |2,2);"Import Dat|
000001f0  61 22 0d 01 04 16 20 f2  77 69 6e 64 6f 77 28 32  |a".... .window(2|
00000200  2c 34 2c 34 30 2c 32 29  0d 01 0e 3c 20 f1 8a 33  |,4,40,2)...< ..3|
00000210  2c 35 29 3b 22 53 6f 75  72 63 65 20 46 69 6c 65  |,5);"Source File|
00000220  6e 61 6d 65 3a 22 3b 8a  33 2c 36 29 3b 22 44 65  |name:";.3,6);"De|
00000230  73 74 69 6e 61 74 69 6f  6e 20 46 69 6c 65 6e 61  |stination Filena|
00000240  6d 65 3a 22 0d 01 18 21  20 f2 74 65 78 74 28 32  |me:"...! .text(2|
00000250  35 2c 35 2c 31 30 29 3a  73 6f 75 72 63 65 24 3d  |5,5,10):source$=|
00000260  74 65 78 74 24 0d 01 22  1f 20 f2 74 65 78 74 28  |text$..". .text(|
00000270  32 35 2c 36 2c 31 30 29  3a 64 65 73 74 24 3d 74  |25,6,10):dest$=t|
00000280  65 78 74 24 0d 01 2c 3a  20 70 6f 69 6e 74 65 72  |ext$..,: pointer|
00000290  24 3d 64 65 73 74 24 2b  22 4e 22 3a 66 70 3d ad  |$=dest$+"N":fp=.|
000002a0  a4 46 69 6c 65 28 70 6f  69 6e 74 65 72 24 29 3a  |.File(pointer$):|
000002b0  e8 23 66 70 2c 64 69 72  24 3a d9 23 66 70 0d 01  |.#fp,dir$:.#fp..|
000002c0  36 29 20 f4 20 4f 53 43  4c 49 28 22 64 69 72 20  |6) . OSCLI("dir |
000002d0  3c 44 61 74 61 56 69 73  69 6f 6e 24 44 69 72 3e  |<DataVision$Dir>|
000002e0  22 2b 64 69 72 24 29 0d  01 40 36 20 64 69 63 74  |"+dir$)..@6 dict|
000002f0  69 6f 6e 61 72 79 24 3d  22 3c 44 61 74 61 56 69  |ionary$="<DataVi|
00000300  73 69 6f 6e 24 44 69 72  3e 22 2b 64 69 72 24 2b  |sion$Dir>"+dir$+|
00000310  22 2e 22 2b 64 65 73 74  24 2b 22 41 22 0d 01 4a  |"."+dest$+"A"..J|
00000320  31 20 64 69 72 64 65 73  74 24 20 3d 20 22 3c 44  |1 dirdest$ = "<D|
00000330  61 74 61 56 69 73 69 6f  6e 24 44 69 72 3e 22 2b  |ataVision$Dir>"+|
00000340  64 69 72 24 2b 22 2e 22  2b 64 65 73 74 24 0d 01  |dir$+"."+dest$..|
00000350  54 15 20 66 70 31 3d ad  64 69 63 74 69 6f 6e 61  |T. fp1=.dictiona|
00000360  72 79 24 0d 01 5e 9b 20  cf 23 66 70 31 3d 30 3a  |ry$..^. .#fp1=0:|
00000370  e8 23 66 70 31 2c 6e 6f  66 24 3a cf 23 66 70 31  |.#fp1,nof$:.#fp1|
00000380  3d 35 3a e8 23 66 70 31  2c 6e 6f 72 24 3a cf 23  |=5:.#fp1,nor$:.#|
00000390  66 70 31 3d 31 35 3a e8  23 66 70 31 2c 72 65 63  |fp1=15:.#fp1,rec|
000003a0  6c 65 6e 24 3a 6e 6f 66  25 3d bb 28 6e 6f 66 24  |len$:nof%=.(nof$|
000003b0  29 3a 6e 6f 72 25 3d bb  28 6e 6f 72 24 29 3a 72  |):nor%=.(nor$):r|
000003c0  65 63 6c 65 6e 25 3d bb  28 72 65 63 6c 65 6e 24  |eclen%=.(reclen$|
000003d0  29 3a e7 20 6e 6f 72 25  3d 30 20 8c 20 66 70 32  |):. nor%=0 . fp2|
000003e0  3d ae 28 64 69 72 64 65  73 74 24 29 3a 8b 20 66  |=.(dirdest$):. f|
000003f0  70 32 3d ad 28 64 69 72  64 65 73 74 24 29 0d 01  |p2=.(dirdest$)..|
00000400  68 27 20 66 69 65 6c 64  25 3d 31 3a 72 65 63 6e  |h' field%=1:recn|
00000410  6f 25 3d 28 6e 6f 72 25  2b 31 29 3a 66 69 65 6c  |o%=(nor%+1):fiel|
00000420  64 24 3d 22 22 0d 01 72  28 20 ff 28 22 65 78 65  |d$=""..r( .("exe|
00000430  63 20 3c 44 61 74 61 56  69 73 69 6f 6e 24 44 69  |c <DataVision$Di|
00000440  72 3e 2e 22 2b 73 6f 75  72 63 65 24 29 0d 01 7c  |r>."+source$)..||
00000450  0f 20 63 68 61 72 24 3d  bf 28 30 29 0d 01 86 06  |. char$=.(0)....|
00000460  20 f5 0d 01 90 17 20 20  20 e7 20 63 68 61 72 24  | .....   . char$|
00000470  3c 3e bd 28 31 33 29 20  8c 0d 01 9a 1c 20 20 20  |<>.(13) .....   |
00000480  20 20 66 69 65 6c 64 24  3d 66 69 65 6c 64 24 2b  |  field$=field$+|
00000490  63 68 61 72 24 0d 01 a4  08 20 20 20 cc 0d 01 ae  |char$....   ....|
000004a0  14 20 20 20 20 20 f2 73  74 6f 72 65 66 69 65 6c  |.     .storefiel|
000004b0  64 0d 01 b8 22 20 20 20  20 20 66 69 65 6c 64 25  |d..."     field%|
000004c0  3d 66 69 65 6c 64 25 2b  31 3a 66 69 65 6c 64 24  |=field%+1:field$|
000004d0  3d 22 22 0d 01 c2 59 20  20 20 20 20 e7 20 66 69  |=""...Y     . fi|
000004e0  65 6c 64 25 3e 6e 6f 66  25 20 8c 20 f1 8a 33 30  |eld%>nof% . ..30|
000004f0  2c 32 31 29 3b 22 49 6d  70 6f 72 74 65 64 20 52  |,21);"Imported R|
00000500  65 63 6f 72 64 20 22 3b  72 65 63 6e 6f 25 3b 22  |ecord ";recno%;"|
00000510  20 20 22 3a 66 69 65 6c  64 25 3d 31 3a 72 65 63  |  ":field%=1:rec|
00000520  6e 6f 25 3d 72 65 63 6e  6f 25 2b 31 0d 01 cc 08  |no%=recno%+1....|
00000530  20 20 20 cd 0d 01 d6 11  20 20 20 63 68 61 72 24  |   .....   char$|
00000540  3d bf 28 30 29 0d 01 e0  0f 20 fd 20 63 68 61 72  |=.(0).... . char|
00000550  24 3d 22 22 0d 01 ea 23  20 cf 23 66 70 31 3d 35  |$=""...# .#fp1=5|
00000560  3a f1 23 66 70 31 2c c3  28 72 65 63 6e 6f 25 2d  |:.#fp1,.(recno%-|
00000570  31 29 3a d9 20 23 30 0d  01 f4 06 20 db 0d 01 fe  |1):. #0.... ....|
00000580  06 20 e1 0d 02 08 05 20  0d 02 12 11 20 dd f2 73  |. ..... .... ..s|
00000590  74 6f 72 65 66 69 65 6c  64 0d 02 1c 50 20 cf 23  |torefield...P .#|
000005a0  66 70 31 3d 28 66 69 65  6c 64 25 2d 31 29 2a 36  |fp1=(field%-1)*6|
000005b0  31 2b 31 30 34 3a e8 23  66 70 31 2c 6c 65 6e 67  |1+104:.#fp1,leng|
000005c0  74 68 24 3a cf 23 66 70  31 3d 28 66 69 65 6c 64  |th$:.#fp1=(field|
000005d0  25 2d 31 29 2a 36 31 2b  31 30 39 3a e8 23 66 70  |%-1)*61+109:.#fp|
000005e0  31 2c 74 6f 74 69 6e 70  24 0d 02 26 38 20 e7 20  |1,totinp$..&8 . |
000005f0  a9 28 66 69 65 6c 64 24  29 3e bb 28 6c 65 6e 67  |.(field$)>.(leng|
00000600  74 68 24 29 20 8c 20 66  69 65 6c 64 24 3d c0 66  |th$) . field$=.f|
00000610  69 65 6c 64 24 2c bb 28  6c 65 6e 67 74 68 24 29  |ield$,.(length$)|
00000620  29 0d 02 30 35 20 cf 23  66 70 32 3d 28 72 65 63  |)..05 .#fp2=(rec|
00000630  6e 6f 25 2d 31 29 2a 72  65 63 6c 65 6e 25 2b bb  |no%-1)*reclen%+.|
00000640  28 74 6f 74 69 6e 70 24  29 3a f1 23 66 70 32 2c  |(totinp$):.#fp2,|
00000650  66 69 65 6c 64 24 0d 02  3a 09 20 ef 20 32 36 0d  |field$..:. . 26.|
00000660  02 44 06 20 e1 0d 02 4e  05 20 0d 02 58 0d 20 dd  |.D. ...N. ..X. .|
00000670  f2 65 78 70 6f 72 74 0d  02 62 06 20 db 0d 02 6c  |.export..b. ...l|
00000680  19 20 f1 8a 32 2c 32 29  3b 22 45 78 70 6f 72 74  |. ..2,2);"Export|
00000690  20 44 61 74 61 22 0d 02  76 16 20 f2 77 69 6e 64  | Data"..v. .wind|
000006a0  6f 77 28 32 2c 34 2c 34  30 2c 32 29 0d 02 80 3c  |ow(2,4,40,2)...<|
000006b0  20 f1 8a 33 2c 35 29 3b  22 53 6f 75 72 63 65 20  | ..3,5);"Source |
000006c0  46 69 6c 65 6e 61 6d 65  3a 22 3b 8a 33 2c 36 29  |Filename:";.3,6)|
000006d0  3b 22 44 65 73 74 69 6e  61 74 69 6f 6e 20 46 69  |;"Destination Fi|
000006e0  6c 65 6e 61 6d 65 3a 22  0d 02 8a 21 20 f2 74 65  |lename:"...! .te|
000006f0  78 74 28 32 35 2c 35 2c  31 30 29 3a 73 6f 75 72  |xt(25,5,10):sour|
00000700  63 65 24 3d 74 65 78 74  24 0d 02 94 1f 20 f2 74  |ce$=text$.... .t|
00000710  65 78 74 28 32 35 2c 36  2c 31 30 29 3a 64 65 73  |ext(25,6,10):des|
00000720  74 24 3d 74 65 78 74 24  0d 02 9e 3c 20 70 6f 69  |t$=text$...< poi|
00000730  6e 74 65 72 24 3d 73 6f  75 72 63 65 24 2b 22 4e  |nter$=source$+"N|
00000740  22 3a 66 70 3d ad a4 46  69 6c 65 28 70 6f 69 6e  |":fp=..File(poin|
00000750  74 65 72 24 29 3a e8 23  66 70 2c 64 69 72 24 3a  |ter$):.#fp,dir$:|
00000760  d9 23 66 70 0d 02 a8 29  20 f4 20 4f 53 43 4c 49  |.#fp...) . OSCLI|
00000770  28 22 64 69 72 20 3c 44  61 74 61 56 69 73 69 6f  |("dir <DataVisio|
00000780  6e 24 44 69 72 3e 22 2b  64 69 72 24 29 0d 02 b2  |n$Dir>"+dir$)...|
00000790  38 20 64 69 63 74 69 6f  6e 61 72 79 24 3d 22 3c  |8 dictionary$="<|
000007a0  44 61 74 61 56 69 73 69  6f 6e 24 44 69 72 3e 22  |DataVision$Dir>"|
000007b0  2b 64 69 72 24 2b 22 2e  22 2b 73 6f 75 72 63 65  |+dir$+"."+source|
000007c0  24 2b 22 41 22 0d 02 bc  40 20 66 70 31 3d ad 64  |$+"A"...@ fp1=.d|
000007d0  69 63 74 69 6f 6e 61 72  79 24 3a 66 70 32 3d ad  |ictionary$:fp2=.|
000007e0  28 22 3c 44 61 74 61 56  69 73 69 6f 6e 24 44 69  |("<DataVision$Di|
000007f0  72 3e 22 2b 64 69 72 24  2b 22 2e 22 2b 73 6f 75  |r>"+dir$+"."+sou|
00000800  72 63 65 24 29 0d 02 c6  6e 20 cf 23 66 70 31 3d  |rce$)...n .#fp1=|
00000810  30 3a e8 23 66 70 31 2c  6e 6f 66 24 3a cf 23 66  |0:.#fp1,nof$:.#f|
00000820  70 31 3d 35 3a e8 23 66  70 31 2c 6e 6f 72 24 3a  |p1=5:.#fp1,nor$:|
00000830  cf 23 66 70 31 3d 31 35  3a e8 23 66 70 31 2c 72  |.#fp1=15:.#fp1,r|
00000840  65 63 6c 65 6e 24 3a 6e  6f 66 25 3d bb 28 6e 6f  |eclen$:nof%=.(no|
00000850  66 24 29 3a 6e 6f 72 25  3d bb 28 6e 6f 72 24 29  |f$):nor%=.(nor$)|
00000860  3a 72 65 63 6c 65 6e 25  3d bb 28 72 65 63 6c 65  |:reclen%=.(recle|
00000870  6e 24 29 0d 02 d0 14 20  ef 20 32 38 2c 30 2c 33  |n$).... . 28,0,3|
00000880  31 2c 37 39 2c 31 30 0d  02 da 27 20 ff 28 22 73  |1,79,10...' .("s|
00000890  70 6f 6f 6c 20 3c 44 61  74 61 56 69 73 69 6f 6e  |pool <DataVision|
000008a0  24 44 69 72 3e 2e 22 2b  64 65 73 74 24 29 0d 02  |$Dir>."+dest$)..|
000008b0  e4 16 20 e3 20 72 65 63  6e 6f 25 3d 31 20 b8 20  |.. . recno%=1 . |
000008c0  6e 6f 72 25 0d 02 ee 1a  20 20 20 20 20 e3 20 66  |nor%....     . f|
000008d0  69 65 6c 64 25 3d 31 20  b8 20 6e 6f 66 25 0d 02  |ield%=1 . nof%..|
000008e0  f8 32 20 20 20 20 20 20  20 20 20 cf 23 66 70 31  |.2         .#fp1|
000008f0  3d 28 66 69 65 6c 64 25  2d 31 29 2a 36 31 2b 31  |=(field%-1)*61+1|
00000900  30 39 3a e8 23 66 70 31  2c 74 6f 74 69 6e 70 24  |09:.#fp1,totinp$|
00000910  0d 03 02 3d 20 20 20 20  20 20 20 20 20 cf 23 66  |...=         .#f|
00000920  70 32 3d 28 72 65 63 6e  6f 25 2d 31 29 2a 72 65  |p2=(recno%-1)*re|
00000930  63 6c 65 6e 25 2b bb 28  74 6f 74 69 6e 70 24 29  |clen%+.(totinp$)|
00000940  3a e8 23 66 70 32 2c 66  69 65 6c 64 24 0d 03 0c  |:.#fp2,field$...|
00000950  1a 20 20 20 20 20 20 20  20 20 f1 20 66 69 65 6c  |.         . fiel|
00000960  64 24 2b 22 20 20 22 0d  03 16 11 20 20 20 20 20  |d$+"  "....     |
00000970  ed 20 66 69 65 6c 64 25  0d 03 20 0d 20 ed 20 72  |. field%.. . . r|
00000980  65 63 6e 6f 25 0d 03 2a  1b 20 ff 28 22 73 70 6f  |ecno%..*. .("spo|
00000990  6f 6c 22 29 3a d9 23 66  70 31 3a d9 23 66 70 32  |ol"):.#fp1:.#fp2|
000009a0  0d 03 34 09 20 ef 20 32  36 0d 03 3e 06 20 db 0d  |..4. . 26..>. ..|
000009b0  03 48 06 20 e1 0d 03 52  05 20 0d 03 5c 14 20 f4  |.H. ...R. ..\. .|
000009c0  20 45 72 72 6f 72 20 48  61 6e 64 6c 65 72 0d 03  | Error Handler..|
000009d0  66 15 20 e7 20 9f 20 3d  20 31 37 20 8c 20 f2 51  |f. . . = 17 . .Q|
000009e0  75 69 74 0d 03 70 0b 20  ef 20 32 36 3a db 0d 03  |uit..p. . 26:...|
000009f0  7a 43 20 f1 8a 32 2c 32  29 3b 22 45 72 72 6f 72  |zC ..2,2);"Error|
00000a00  20 69 6e 20 22 3b 3a e7  20 73 65 6c 65 63 74 69  | in ";:. selecti|
00000a10  6f 6e 25 3d 31 20 8c 20  f1 22 49 6d 70 6f 72 74  |on%=1 . ."Import|
00000a20  20 22 3b 3a 8b 20 f1 22  45 78 70 6f 72 74 20 22  | ";:. ."Export "|
00000a30  3b 0d 03 84 14 20 f1 20  22 70 72 6f 63 65 64 75  |;.... . "procedu|
00000a40  72 65 3a 22 27 0d 03 8e  1c 20 f1 8a 32 2c 33 29  |re:"'.... ..2,3)|
00000a50  3b f6 24 3b 22 20 61 74  20 6c 69 6e 65 20 22 3b  |;.$;" at line ";|
00000a60  9e 0d 03 98 3c 20 f1 20  8a 32 30 2c 33 30 29 3b  |....< . .20,30);|
00000a70  22 50 72 65 73 73 20 61  6e 79 20 6d 6f 75 73 65  |"Press any mouse|
00000a80  20 62 75 74 74 6f 6e 20  74 6f 20 65 78 69 74 20  | button to exit |
00000a90  62 61 63 6b 20 74 6f 20  6d 65 6e 75 22 0d 03 a2  |back to menu"...|
00000aa0  28 20 ff 20 22 46 58 31  35 22 3a f5 3a c8 97 20  |( . "FX15":.:.. |
00000ab0  6d 78 25 2c 6d 79 25 2c  6d 62 25 3a fd 20 6d 62  |mx%,my%,mb%:. mb|
00000ac0  25 20 3c 3e 30 0d 03 ac  0a 20 f2 51 75 69 74 0d  |% <>0.... .Quit.|
00000ad0  03 b6 05 20 0d 03 c0 17  dd f2 77 69 6e 64 6f 77  |... ......window|
00000ae0  28 78 2c 79 2c 77 25 2c  6c 25 29 0d 03 ca 77 f1  |(x,y,w%,l%)...w.|
00000af0  8a 78 2c 79 29 3b bd 28  31 35 34 29 3b c4 77 25  |.x,y);.(154);.w%|
00000b00  2c bd 28 31 35 39 29 29  3b bd 28 31 35 38 29 3a  |,.(159));.(158):|
00000b10  e3 49 3d 79 2b 31 b8 79  2b 6c 25 3a f1 8a 78 2c  |.I=y+1.y+l%:..x,|
00000b20  49 29 3b bd 28 31 35 35  29 3b c4 77 25 2c 22 20  |I);.(155);.w%," |
00000b30  22 29 3b bd 28 31 35 37  29 3a ed 49 3a f1 8a 78  |");.(157):.I:..x|
00000b40  2c 79 2b 6c 25 2b 31 29  3b bd 28 31 35 36 29 3b  |,y+l%+1);.(156);|
00000b50  c4 77 25 2c bd 28 31 36  30 29 29 3b bd 28 31 36  |.w%,.(160));.(16|
00000b60  31 29 0d 03 d4 05 e1 0d  03 de 12 dd f2 74 65 78  |1)...........tex|
00000b70  74 28 58 2c 59 2c 4c 25  29 0d 03 e8 0e 54 24 3d  |t(X,Y,L%)....T$=|
00000b80  22 22 3a 50 54 3d 30 0d  03 f2 18 e7 50 54 3c 4c  |"":PT=0.....PT<L|
00000b90  25 8c f1 8a 58 2c 59 29  3b bd 28 32 35 35 29 0d  |%...X,Y);.(255).|
00000ba0  03 fc 20 49 4e 3d a5 3a  e7 49 4e 3d 31 33 8c f1  |.. IN=.:.IN=13..|
00000bb0  8a 58 2c 59 29 3b 22 20  22 3a e5 8d 54 78 44 0d  |.X,Y);" ":..TxD.|
00000bc0  04 06 11 e7 49 4e 3d 31  32 37 8c 20 8d 54 64 44  |....IN=127. .TdD|
00000bd0  0d 04 10 10 e7 50 54 3d  4c 25 8c 20 8d 64 7c 43  |.....PT=L%. .d|C|
00000be0  0d 04 1a 30 f1 8a 58 2c  59 29 3b bd 28 49 4e 29  |...0..X,Y);.(IN)|
00000bf0  3a 50 54 3d 50 54 2b 31  3a 54 24 3d 54 24 2b bd  |:PT=PT+1:T$=T$+.|
00000c00  28 49 4e 29 3a 58 3d 58  2b 31 3a e5 8d 64 72 43  |(IN):X=X+1:..drC|
00000c10  0d 04 24 0f e7 50 54 3d  30 8c 20 8d 64 7c 43 0d  |..$..PT=0. .d|C.|
00000c20  04 2e 2d f1 8a 58 2c 59  29 3b 22 20 22 3a 58 3d  |..-..X,Y);" ":X=|
00000c30  58 2d 31 3a 50 54 3d 50  54 2d 31 3a 54 24 3d c0  |X-1:PT=PT-1:T$=.|
00000c40  54 24 2c 50 54 29 3a e5  8d 64 72 43 0d 04 38 0e  |T$,PT):..drC..8.|
00000c50  74 65 78 74 24 3d 54 24  3a e1 0d 04 42 3c dd f2  |text$=T$:...B<..|
00000c60  73 65 6c 65 63 74 69 6f  6e 28 58 2c 59 2c 4c 25  |selection(X,Y,L%|
00000c70  2c 57 25 29 3a 45 44 25  3d 59 2b 28 4c 25 2d 31  |,W%):ED%=Y+(L%-1|
00000c80  29 3a 42 47 25 3d 58 2b  28 57 25 2d 31 29 3a 53  |):BG%=X+(W%-1):S|
00000c90  53 45 4c 25 3d 31 0d 04  4c 42 e3 49 3d 31 b8 4c  |SEL%=1..LB.I=1.L|
00000ca0  25 3a f1 8a 58 2c 59 2b  28 49 2d 31 29 29 3b 22  |%:..X,Y+(I-1));"|
00000cb0  20 20 22 3b 6d 65 6e 75  24 28 49 29 3b c4 28 57  |  ";menu$(I);.(W|
00000cc0  25 2d 32 29 2d a9 28 6d  65 6e 75 24 28 49 29 29  |%-2)-.(menu$(I))|
00000cd0  2c 22 20 22 29 3a ed 49  0d 04 56 2b c8 97 20 58  |," "):.I..V+.. X|
00000ce0  50 2c 59 50 2c 42 55 54  3a 58 50 3d a8 28 58 50  |P,YP,BUT:XP=.(XP|
00000cf0  2f 31 36 29 3a 59 50 3d  33 31 2d a8 28 59 50 2f  |/16):YP=31-.(YP/|
00000d00  33 32 29 0d 04 60 18 e7  59 50 3c 59 20 84 20 59  |32)..`..YP<Y . Y|
00000d10  50 3e 45 44 25 8c 20 8d  44 4c 44 0d 04 6a 18 e7  |P>ED%. .DLD..j..|
00000d20  58 50 3c 58 20 84 20 58  50 3e 42 47 25 8c 20 8d  |XP<X . XP>BG%. .|
00000d30  44 4c 44 0d 04 74 77 53  45 4c 25 3d 28 59 50 2d  |DLD..twSEL%=(YP-|
00000d40  59 29 2b 31 3a f2 43 4c  45 41 3a fb 20 31 33 31  |Y)+1:.CLEA:. 131|
00000d50  3a fb 31 32 37 3a f1 8a  58 2c 59 50 29 3b 22 20  |:.127:..X,YP);" |
00000d60  20 22 3b 6d 65 6e 75 24  28 53 45 4c 25 29 3b c4  | ";menu$(SEL%);.|
00000d70  28 57 25 2d 32 29 2d a9  28 6d 65 6e 75 24 28 53  |(W%-2)-.(menu$(S|
00000d80  45 4c 25 29 29 2c 22 20  22 29 3a fb 20 66 67 25  |EL%))," "):. fg%|
00000d90  3a fb 31 32 37 3a e7 42  55 54 3c 3e 30 8c e5 8d  |:.127:.BUT<>0...|
00000da0  44 7e 44 3a 8b e5 8d 44  56 44 0d 04 7e 18 73 65  |D~D:...DVD..~.se|
00000db0  6c 65 63 74 69 6f 6e 25  3d 53 45 4c 25 3a ef 37  |lection%=SEL%:.7|
00000dc0  3a e1 0d 04 88 56 dd f2  43 4c 45 41 3a e7 53 53  |:....V..CLEA:.SS|
00000dd0  45 4c 25 3c 3e 53 45 4c  25 8c e3 49 3d 31 b8 4c  |EL%<>SEL%..I=1.L|
00000de0  25 3a f1 8a 58 2c 59 2b  28 49 2d 31 29 29 3b 22  |%:..X,Y+(I-1));"|
00000df0  20 20 22 3b 6d 65 6e 75  24 28 49 29 3b c4 28 57  |  ";menu$(I);.(W|
00000e00  25 2d 32 29 2d a9 28 6d  65 6e 75 24 28 49 29 29  |%-2)-.(menu$(I))|
00000e10  2c 22 20 22 29 3a ed 49  0d 04 92 10 53 53 45 4c  |," "):.I....SSEL|
00000e20  25 3d 53 45 4c 25 3a e1  0d 04 9c 05 20 0d 04 a6  |%=SEL%:..... ...|
00000e30  0a dd f2 51 75 69 74 0d  04 b0 08 d9 20 23 30 0d  |...Quit..... #0.|
00000e40  04 ba 1e c8 99 20 22 57  69 6d 70 5f 43 6f 6d 6d  |..... "Wimp_Comm|
00000e50  61 6e 64 57 69 6e 64 6f  77 22 2c 2d 31 0d 04 c4  |andWindow",-1...|
00000e60  06 c8 98 0d 04 ce 12 dd  20 a4 46 69 6c 65 28 66  |........ .File(f|
00000e70  69 6c 65 24 29 0d 04 d8  1e 3d 22 3c 44 61 74 61  |ile$)....="<Data|
00000e80  56 69 73 69 6f 6e 24 44  69 72 3e 2e 22 2b 66 69  |Vision$Dir>."+fi|
00000e90  6c 65 24 0d ff                                    |le$..|
00000e95