Post Reply 
(HP71B) Speed experience with Video (EMU71 and Video80 screen)
11-03-2023, 06:45 PM (This post was last modified: 11-08-2023 07:37 PM by Sylvain Cote.)
Post: #9
RE: (HP71B) Speed experience with Video (EMU71 and Video80 screen)
I have optimized my clock program, the refresh rate is now at 2 seconds when running at original speed and under 1 second when running at full speed.

My test setup was:
  • macOS Ventura (v13.6.1)
  • Parallels Desktop (v19.1.0)
  • Windows 7 Pro 32-bit (v6.1 b7601 SP1)
  • Emu71 (v1.17)
  • ILVideo80 (v1.3)
  • ILPer (v2.4)
  • lifutils (v1.7.10)
HP-IL loop setup
  • Address 0 : Emu71 (controller)
  • Address 1 : ILVideo80 (DISPLAY)
  • Address 2 : ILPer - Printer (DISPLAY)
  • Address 3 : ILPer - Drive1 (HP9114B)
  • Address 4 : ILPer - Drive2 (HDRIVE1)
  • Address 5 : ILPer - DosLink (DOSLINK)
TCP/IP configuration

Code:
Device      IP-address   TCP-in-port   TCP-out-port
Emu71       localhost       60000         60001
ILVideo80   localhost       60001         60002
ILPer       localhost       60002         60000

Files: Video v2 BASIC listing:
Code:
  5 ! digital clock v2
 10 OPTION BASE 0 @ DELAY 0,0 @ A=1

 20 DISP "MEM ALLOC"
 22 DIM B0$[2*10] ! BSETUP
 24 DIM B9$[2*10] ! BRESET
 26 DIM B1$[((4+80)*2)+((4+1)*22*2)] ! frame
 28 DIM B2$[(4+80)*2] ! middle line
 30 DIM B3$[((9+4)*7*6)+((6+4)*7*2)] ! date
 32 DIM B4$[((9+4)*7*6)+((6+4)*7*2)] ! time
 34 DIM F1$(10)[9*7],   F2$(2)[6*7]      ! font arrays
 36 DIM T1$(3)[(9+4)*7],T2$(10)[(9+4)*7] ! {0..2} & {0..9} hours caching
 38 DIM T3$(6)[(9+4)*7],T4$(10)[(9+4)*7] ! {0..5} & {0..9} minutes caching
 40 DIM T5$(6)[(9+4)*7],T6$(10)[(9+4)*7] ! {0..5} & {0..9} seconds caching
 42 DIM P$(4)[(6+4)*7] ! {: : / /} punctuations caching
 44 DIM R(2), C(8) ! row & col positions

 50 DISP "BUILDING CACHE"
 52 B0$="" @ CALL BSETUP(B0$)
 54 B9$="" @ CALL BRESET(B9$)
 56 R(0)= 3 @ R(1)=13 @ W1=10 @ W2=7
 58 C(0)= 3 @ C(1)=13 @ C(2)=23 @ C(3)=30
 60 C(4)=40 @ C(5)=50 @ C(6)=57 @ C(7)=67
 62 CALL LDIGIT(F1$) @ CALL LPUNCT(F2$)
 64 FOR I=0 TO 2 @ T1$(I)="" @ CALL BDIGIT(T1$(I),R(1),C(0),F1$(),I) @ NEXT I
 66 FOR I=0 TO 9 @ T2$(I)="" @ CALL BDIGIT(T2$(I),R(1),C(1),F1$(),I) @ NEXT I
 68 P$(2)="" @ CALL BPUNCT(P$(2),R(1),C(2),F2$(),0)
 70 FOR I=0 TO 5 @ T3$(I)="" @ CALL BDIGIT(T3$(I),R(1),C(3),F1$(),I) @ NEXT I
 72 FOR I=0 TO 9 @ T4$(I)="" @ CALL BDIGIT(T4$(I),R(1),C(4),F1$(),I) @ NEXT I
 74 P$(3)="" @ CALL BPUNCT(P$(3),R(1),C(5),F2$(),0)
 76 FOR I=0 TO 5 @ T5$(I)="" @ CALL BDIGIT(T5$(I),R(1),C(6),F1$(),I) @ NEXT I
 78 FOR I=0 TO 9 @ T6$(I)="" @ CALL BDIGIT(T6$(I),R(1),C(7),F1$(),I) @ NEXT I
 80 B1$="" @ CALL BFRAME(B1$, 1,0,21,79)
 82 B2$="" @ CALL BFRAME(B2$,11,0,11,79)

100 DISP "SHOW CLOCK"
102 CALL ILSEND(B0$,A) @ CALL ILSEND(B1$,A) @ CALL ILSEND(B2$,A)
104 D8$="" @ D9$="" @ T8$="" @ T9$=""
106 D0$=D9$ @ B3$=""
108 CALL BDATE(B3$,F1$(),F2$(),  3,3,W1,W2,D8$,D9$)
110 IF D0$#D8$ THEN CALL ILSEND(B3$,A)
112 T0$=T9$ @ B4$=""
114 ! CALL BTIME(B4$,F1$(),F2$(), 13,3,W1,W2,T8$,T9$)
116 CALL CTIME(B4$,T1$(),T2$(),T3$(),T4$(),T5$(),T6$(),P$(2),P$(3),T8$,T9$)
118 IF T0$#T9$ THEN CALL ILSEND(B4$,A)
120 DISP "20"&D9$&" "&T9$
122 IF LEN(KEY$)=0 THEN GOTO 106

190 DISP "END"
192 CALL ILSEND(B9$,A)
194 PUT "#43"
196 END

450 ! cached-time(buffer,digit-cached-array(6x),punct-cached(2x),current-time,prev-time)
452 SUB CTIME(B$,C1$(),C2$(),C3$(),C4$(),C5$(),C6$(),P1$,P2$,T1$,T2$)
454   L1=LEN(T1$) @ T1$=TIME$
456   L2=LEN(T2$) @ IF L2=0 THEN T2$=T1$
458   IF L1>0 AND T1$=T2$ THEN GOTO 490
460   T1=VAL(T1$[1,1]) @ T2=VAL(T2$[1,1])
462   IF L1=0 OR T1#T2 THEN B$=B$&C1$(T1)
464   T1=VAL(T1$[2,2]) @ T2=VAL(T2$[2,2])
466   IF L1=0 OR T1#T2 THEN B$=B$&C2$(T1)
468   IF L1=0 THEN B$=B$&P1$
470   T1=VAL(T1$[4,4]) @ T2=VAL(T2$[4,4])
472   IF L1=0 OR T1#T2 THEN B$=B$&C3$(T1)
474   T1=VAL(T1$[5,5]) @ T2=VAL(T2$[5,5])
476   IF L1=0 OR T1#T2 THEN B$=B$&C4$(T1)
478   IF L1=0 THEN B$=B$&P2$
480   T1=VAL(T1$[7,7]) @ T2=VAL(T2$[7,7])
482   IF L1=0 OR T1#T2 THEN B$=B$&C5$(T1)
484   T1=VAL(T1$[8,8]) @ T2=VAL(T2$[8,8])
486   IF L1=0 OR T1#T2 THEN B$=B$&C6$(T1)
488   T2$=T1$
490 END SUB

500 ! build-date(buffer,digit-font,punct-font,row,col,d-width,p-width,curr-date,prev-date)
502 SUB BDATE(B$,D$(),P$(),R,C,W1,W2,D1$,D2$)
504   L1=LEN(D1$) @ D1$=DATE$
506   L2=LEN(D2$) @ IF L2=0 THEN D2$=D1$
508   IF L1>0 AND D1$=D2$ THEN GOTO 540
510   D1=VAL(D1$[1,1]) @ D2=VAL(D2$[1,1])
512   W=0    @ IF L1=0 OR D1#D2 THEN CALL BDIGIT(B$,R,C+W,D$(),D1)
514   D1=VAL(D1$[2,2]) @ D2=VAL(D2$[2,2])
516   W=W+W1 @ IF L1=0 OR D1#D2 THEN CALL BDIGIT(B$,R,C+W,D$(),D1)
518   W=W+W1 @ IF L1=0          THEN CALL BPUNCT(B$,R,C+W,P$(), 1)
520   D1=VAL(D1$[4,4]) @ D2=VAL(D2$[4,4])
522   W=W+W2 @ IF L1=0 OR D1#D2 THEN CALL BDIGIT(B$,R,C+W,D$(),D1)
524   D1=VAL(D1$[5,5]) @ D2=VAL(D2$[5,5])
526   W=W+W1 @ IF L1=0 OR D1#D2 THEN CALL BDIGIT(B$,R,C+W,D$(),D1)
528   W=W+W1 @ IF L1=0          THEN CALL BPUNCT(B$,R,C+W,P$(), 1)
530   D1=VAL(D1$[7,7]) @ D2=VAL(D2$[7,7])
532   W=W+W2 @ IF L1=0 OR D1#D2 THEN CALL BDIGIT(B$,R,C+W,D$(),D1)
534   D1=VAL(D1$[8,8]) @ D2=VAL(D2$[8,8])
536   W=W+W1 @ IF L1=0 OR D1#D2 THEN CALL BDIGIT(B$,R,C+W,D$(),D1)
538   D2$=D1$
540 END SUB

550 ! build-time(buffer,digit-font,punct-font,row,col,d-width,p-width,curr-time,prev-time)
552 SUB BTIME(B$,D$(),P$(),R,C,W1,W2,T1$,T2$)
554   L1=LEN(T1$) @ T1$=TIME$
556   L2=LEN(T2$) @ IF L2=0 THEN T2$=T1$
558   IF L1>0 AND T1$=T2$ THEN GOTO 590
560   T1=VAL(T1$[1,1]) @ T2=VAL(T2$[1,1])
562   W=0    @ IF L1=0 OR T1#T2 THEN CALL BDIGIT(B$,R,C+W,D$(),T1)
564   T1=VAL(T1$[2,2]) @ T2=VAL(T2$[2,2])
566   W=W+W1 @ IF L1=0 OR T1#T2 THEN CALL BDIGIT(B$,R,C+W,D$(),T1)
568   W=W+W1 @ IF L1=0          THEN CALL BPUNCT(B$,R,C+W,P$(), 0)
570   T1=VAL(T1$[4,4]) @ T2=VAL(T2$[4,4])
572   W=W+W2 @ IF L1=0 OR T1#T2 THEN CALL BDIGIT(B$,R,C+W,D$(),T1)
574   T1=VAL(T1$[5,5]) @ T2=VAL(T2$[5,5])
576   W=W+W1 @ IF L1=0 OR T1#T2 THEN CALL BDIGIT(B$,R,C+W,D$(),T1)
578   W=W+W1 @ IF L1=0          THEN CALL BPUNCT(B$,R,C+W,P$(), 0)
580   T1=VAL(T1$[7,7]) @ T2=VAL(T2$[7,7])
582   W=W+W2 @ IF L1=0 OR T1#T2 THEN CALL BDIGIT(B$,R,C+W,D$(),T1)
584   T1=VAL(T1$[8,8]) @ T2=VAL(T2$[8,8])
586   W=W+W1 @ IF L1=0 OR T1#T2 THEN CALL BDIGIT(B$,R,C+W,D$(),T1)
588   T2$=T1$
590 END SUB

600 ! build-setup(buffer)
602 SUB BSETUP(B$)
604   B$=B$&CHR$(27)&"E"&CHR$(27)&"<"
606 END SUB

620 ! build-reset(buffer)
622 SUB BRESET(B$)
624   B$=B$&CHR$(27)&"E"
626 END SUB

640 ! build-frame(buffer,top-row,left-col,bottom-row,right-col)
642 SUB BFRAME(B$,R1,C1,R2,C2)
644   DEF FNC$(R,C)=CHR$(27)&"%"&CHR$(C)&CHR$(R)
646   V$=CHR$(124) @ H$="-" @ C$="+"
648   B$=B$&FNC$(R1,C1)
650   B$=B$&C$ @ FOR C=C1+1 TO C2-1 @ B$=B$&H$ @ NEXT C @ B$=B$&C$
652   FOR R=R1+1 TO R2-1
654   B$=B$&FNC$(R,C1)&V$&FNC$(R,C2)&V$
656   NEXT R
658   B$=B$&FNC$(R2,C1)
660   B$=B$&C$ @ FOR C=C1+1 TO C2-1 @ B$=B$&H$ @ NEXT C @ B$=B$&C$
662 END SUB

700 ! build-digit(buffer,top-row,left-col,digit-font-array,digit-index)
702 SUB BDIGIT(B$,R,C,F$(),D)
704   DEF FNC$(R,C)=CHR$(27)&"%"&CHR$(C)&CHR$(R)
706   DEF FND$(F$,L)=F$[L*9+1,L*9+9]
708   FOR I=0 TO 6
710     B$=B$&FNC$(R+I,C)&FND$(F$(D),I)
712   NEXT I
714 END SUB

720 ! build-punct(buffer,top-row,left-col,punct-font-array,punct-index)
722 SUB BPUNCT(B$,R,C,F$(),P)
724   DEF FNC$(R,C)=CHR$(27)&"%"&CHR$(C)&CHR$(R)
726   DEF FNP$(F$,L)=F$[L*6+1,L*6+6]
728   FOR I=0 TO 6
730     B$=B$&FNC$(R+I,C)&FNP$(F$(P),I)
732   NEXT I
734 END SUB

740 ! load-digit-font-array(digit-font-array)
742 SUB LDIGIT(D$())
744   D$(0)="  #####   ##   ## ##     ####     ####     ## ##   ##   #####  " ! 0
746   D$(1)="    ##     ####       ##       ##       ##       ##    ####### " ! 1
748   D$(2)=" ####### ##     ##       ## ####### ##       ##       #########" ! 2
750   D$(3)=" ####### ##     ##       ## #######        ####     ## ####### " ! 3
752   D$(4)="##       ##    ## ##    ## ##    ## #########      ##       ## " ! 4
754   D$(5)="###########       ##       ########        ####     ## ####### " ! 5
756   D$(6)=" ####### ##     ####       ######## ##     ####     ## ####### " ! 6
758   D$(7)="###########    ##      ##      ##      ##       ##       ##    " ! 7
760   D$(8)=" ####### ##     ####     ## ####### ##     ####     ## ####### " ! 8
762   D$(9)=" ####### ##     ####     ## ########       ####     ## ####### " ! 9
764 END SUB

780 ! load-punctuation-font-array(punctuation-font-array)
782 SUB LPUNCT(P$())
784   P$(0)="  ##   ####   ##          ##   ####   ##  " ! :
786   P$(1)="     #    #    #    ##    #    #    #     " ! /
788 END SUB

900 ! hp-il-send(buffer,device-address)
902 SUB ILSEND(B$,A)
904   SEND UNT UNL LISTEN A MTA DATA B$ UNT UNL
906 END SUB

Click on "View a Printable Version" at the bottom of the page to get a version without scrollbar.

Edit: TCP/IP configuration information added

Sylvain Côté
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
RE: (HP71B) Speed experience with Video (EMU71 and Video80 screen) - Sylvain Cote - 11-03-2023 06:45 PM



User(s) browsing this thread: