On this occasion, let's try making a tool to
do presentations in the manner of a picture story show using 1B
MicroScript.
Recently, our chances of hearing the term desktop presentation (DTPR) have increased. This is attempting to do a presentation using a personal computer.
If one thinks about it, when it comes down to writing OHP [1] drafts, creating these with handwriting has already become rare. We create drafts with word processor and drawing software, and then we burn the printouts of these onto transparent sheets using a copying machine. However, because they have been accurately entered into a computer, it would be better if we could have used them as is. The personal computer becomes a powerful presentation weapon that not only displays characters and drawings, but also does things like using animation and doing various simulations on the spot [2].
Well then, how will things turn out when we do a presentation with BTRON? In fact, the file system that BTRON possesses (the real object/virtual object model) becomes an outstanding presentation tool just as it is already. You can set up things so that you output tables, graphs, and the like in accordance to need by burying beforehand virtual objects in this place and that. Without losing sight of the overall flow, you can enter into a detailed discussion at the necessary time.
However, the real object/virtual object model is way too flexible, and there are occasions when it is a little difficult to use in a place where we actually do presentations. One cause is that it will be necessary at some time to close an opened window. When an operation to close a window is entered, the force of the presentation ends up getting diminished.
Also, when things are arranged so that any virtual object can be freely opened, there is the possibility that the flow of the entire presentation will end up getting broken off just by mistaking the order in which you open the virtual objects. For a detailed explanation, anyway, it is better for the overall flow to proceed as determined, without making any mistakes.
Accordingly, on this occasion, we shall make it our business to try to create a simple presentation tool for carrying out presentations. Basically, this will be a so-called picture story show. When you click through it, the paper (slides) turns from one to the next. However, I have devised a little scheme in which by making it so that can attach a table of contents to the slides, you make it so that you can begin even from the middle.
First, in the beginning, I would like to have you take a look beforehand at the completed presentation tool. When we start up the virtual object of "1B/V1 Presen," Fig. 1 appears. What I am giving as an example is a presentation concerning the BTRON environment "1B/V1," which is being marketed by Personal Media Corporation. It is a simple thing that consists of four slides in its entirety.
|
|
The four slides are divided in two, "Features" of the former half (three slides) and "References" of the latter half (one slide). It is arranged so that you turn through the slides in order from No. 1 up to No. 4.
"Features" and "References" have been made into virtual objects. When we double click "Features," Fig. 2 appears. This is the No. 1 slide [TN1].
|
|
When you click somewhere on the screen, you move on to the next slide. With just this click operation, you grope along up to the last, No. 4. In the lower right hand corner, the mark of a book appears in which the current page number is displayed. When we click the page on the left side of the book, we return to the previous page.
In the No. 1 and No. 3 slides, virtual objects have been buried. For example, in the No. 1 slide (Fig. 2), when you double click the virtual object "TRON," a window appears (Fig. 3) [which states that "TRON is an abbreviation of The Real-time Operating system Nucleus"]. Of course, any sort of virtual object can be buried. It's all right whether it's a simple text editor window in the manner of Fig. 3, and, furthermore, it's all right even if it's another MicroScript program.
|
|
Actually, when we double click "References" in the cover slide of Fig. 1, we jump from No. 1 to No. 3, and, suddenly, we go to the No. 4 slide. In fact, the virtual objects lined up on top of each other on the cover page slide correspond to a table of contents. It is made up so that when you double click on one of them, the presentation can begin from the middle.
Real Object "1B/V1 Presen"
Well then, let's now go on to take a look at how we create the above Presen slide. When we open the real object "1B/V1" with the figure editor, Fig. 4 appears.
|
|
"Features" and "References" have been made in the form of virtual objects. The title, the background, etc., have all been made into the segment name "Page." The real object "1B/V1 Presen" holds only the role of collecting together each slide. The description of the processing that turns the actual slide manuscripts and slides is carried out in the individual real objects (we shall decide to call these slide real objects; here, "Features" and "References"). In other words, when we change from Fig. 1 to Fig. 2, it comes about that the "Features" window starts up by piling on top of the window in which "1B/V1 Presen" has been executed.
For creating the slides, all we have to look at is "SCRIPT: Register All Slides" (program). Inside this, what forms the guts is the call up of the procedure "Set_VObject" on the 5th and 6th lines. The meaning of each argument is as below.
5 CALL Set_VObject Execute_VObject1 1 3 |
No. 0 argument: | <procedure name executed when double clicked> |
No. 1 argument: | <first page of the slide real object> |
No. 2 argument | <last page of the slide real object> |
Because the "Features" one corresponds to slides No. 1 to No. 3, the no. 1 argument and the no. 2 argument respectively become 1 and 3. The "Execute_VObject1" procedure of the no. 0 argument is described in the 13th to 15th lines directly below.
The "Execute_VObject1" procedure is called up when the "Features" real object is double clicked, which does the processing that opens the actual slides. Here, all we have to do is call up the procedure "Open_Slide_RObject."
14 CALL Open_Slide_RObject 0 VObject1 $ARG[0] |
No. 0 argument: | <slide real object number when first slide real object is made no. 0> |
No. 1 argument: | <name of the slide real object> |
No. 2 argument | <give $ARG[0] unconditionally> |
Real Objects "Features" and "References"
In that case, let's at last take a look through the slide real objects that realize the substance of the slides. When we open the real object "Features" with the figure editor, Fig. 5 appears.
|
|
The segment "Page" is a figure segment that serves as the background. Here, I have used a simple mesh pattern, but if one devises a background with various things, a beautiful presentation will be possible.
Because the book symbol part in the lower right is jammed together, I have placed an enlarged illustration of it in Fig. 6. What I call PG is the character segment for the purpose of displaying the slide number.
|
|
I have attached the names "S01," "S02," and "S03" to things in which I have grouped the slide manuscripts. Along the exterior, there is a thin frame, but this is an empty rectangle for the purpose of attaching an approximation of the size of the slide. This also has been grouped together.
In "S01" and "S03," there are respectively the virtual objects "TRON" and "DoubleClick_This_VObject." However, as virtual objects cannot be grouped, it's fine just to simply place them beforehand in the locations where we would like to show segments. When we display these slides, these virtual objects are displayed together with them, and they will be set to open into a window with a double click.
As for the scripts, it's all right if we look at just "SCRIPT: Slide #1." We call up the procedure "Set_Page" in the order of the slides.
2 CALL Set_Page S01 TRON TRON.X-S01.X TRON.Y-S01.Y |
No. 0 argument: | <segment name> |
No. 1 argument: | <real object name> (if there is one) |
No. 2 argument | <difference between the slide manuscript overall and the X coordinate of the virtual object> (if there is one) |
No. 3 argument | <difference between the slide manuscript overall and the Y coordinate of the virtual object> (if there is one) |
The no. 1 argument to the no. 3 argument are specified in a case where a virtual object is displayed together.
With the real object "References" (Fig. 7) also, it's all right if we write "SCRIPT: Slide #2" [TN2] in the same manner.
|
|
Summary
With the above, the creation of the slide manuscripts and the work of registering them is finished. When we write it, it gets long, but the description of slide manuscript registration can be done almost mechanically. Almost all the work comes down to the work of creating the slide manuscripts with the figure editor, and then making them into groups.
The workings of this presentation are realized through "SCRIPT: Slide Control" (Program 4) and "SCRIPT: Slide Engine" (Program 5). Here, I will briefly mention just that point.
The way in which we take the interface of the script program of the cover page slide ("SCRIPT: Slide Control") and the script program of the individual slides ("SCRIPT: Slide Engine") becomes that point. Because both of them are completely independent programs, we use shared variables in exchanging information.
1 DEFINE Beginning 0 2 DEFINE End 1 3 DEFINE Current 2 4 DEFINE All_End 3 5 DEFINE Moving 4 6 #--------------------------------------------------------------------- 7 DEFINE CURR $GV[Current] # The current slide number 8 DEFINE MIN $GV[Beginning] # The start page of the current slide real object 9 DEFINE MAX $GV[End] # The finish page of the current slide real object 10 DEFINE ALLMAX $GV[All_End] # The finish page of all the slides 11 DEFINE MOVING $GV[Moving] # When a slide movement occurs, "1" is substituted |
When turning through pages, at certain times, processing in which you close your slide real object and open the next slide real object real object becomes necessary. What realizes that is the procedure "Monitor_Page_Turning" (25th to 39th lines) inside "SCRIPT: Slide Control." When the variable MOVING that reports the movement of a slide becomes 1, the procedure searches for a slide real object that should be newly started up, and then it starts that up.
On this occasion, we have created a presentation tool using 1B MicroScript. It is a simple picture story show program.
Expanding the functions in various ways on the basis of this also would be interesting. For example, the first thing that comes to mind is attaching a bookmark that moves in the horizontal direction in the place of the book symbol on the lower right. It would be something that would make it so that you could jump to a favorite page by dragging. If you liken a bookmark to a volume knob, then the volume library in the sixth installment of this series (Vol. 28 of this magazine) could be used.
____________________
|
1 DEFINE VObject1 Features 2 DEFINE VObject2 References 3 #--------------------------------------------------------------------- 4 ACTION Set_PageNo 5 CALL Set_VObject Execute_VObject1 1 3 6 CALL Set_VObject Execute_VObject2 4 4 7 END 8 #--------------------------------------------------------------------- 9 ACTION Initial_Display 10 SCENE Page VObject1 VObject2 11 END 12 #--------------------------------------------------------------------- 13 ACTION Execute_VObject1 DCLICK VObject1 14 CALL Open_Slide_RObject 0 VObject1 $ARG[0] 15 END 16 #--------------------------------------------------------------------- 17 ACTION Execute_VObject2 DCLICK VObject2 18 CALL Open_Slide_RObject 1 VObject2 $ARG[0] 19 END |
|
1 ACTION Set_All_Pages 2 CALL Set_Page S01 TRON TRON.X-S01.X TRON.Y-S01.Y 3 CALL Set_Page S02 4 CALL Set_Page S03 DoubleClick_This_VObject DoubleClick_This_VObject.X-S03.X DoubleClick_This_VObject.Y-S03.Y 5 END |
|
1 ACTION Set_All_Pages 2 CALL Set_Page S01 3 END |
|
1 DEFINE Beginning 0 2 DEFINE End 1 3 DEFINE Current 2 4 DEFINE All_End 3 5 DEFINE Moving 4 6 #--------------------------------------------------------------------- 7 DEFINE CURR $GV[Current] 8 DEFINE MIN $GV[Beginning] 9 DEFINE MAX $GV[End] 10 DEFINE ALLMAX $GV[All_End] 11 DEFINE MOVING $GV[Moving] 12 #--------------------------------------------------------------------- 13 DEFINE MAXVOBJ 16 14 #--------------------------------------------------------------------- 15 VARIABLE VACT[MAXVOBJ] START[MAXVOBJ] END[MAXVOBJ] 16 VARIABLE VCOUNT 17 ACTION Set_VObject 18 SET VACT[VCOUNT] $ARG[0] 19 SET START[VCOUNT] $ARG[1] 20 SET END[VCOUNT] $ARG[2] 21 SET ALLMAX $ARG[2] 22 SET SET VCOUNT VCOUNT + 1 23 END 24 VARIABLE I 25 ACTION Monitor_Page_Turning 26 REPEAT 27 WAIT MOVING == 1 28 SET I 0 29 REPEAT VCOUNT 30 IF (START[I]<=CURR & (CURR<=END[I]) 31 BREAK 32 ENDIF 33 SET I I + 1 34 ENDREPEAT 35 # MESG "%d" I 36 CALL VACT[I] 1 37 SET MOVING 0 38 ENDREPEAT 39 END 40 #--------------------------------------------------------------------- 41 ACTION Open_Slide_RObject 42 VCLOSE 43 SET MIN START[$ARG[0]]; SET MAX END[$ARG[0]] 44 IF $ARG[2] !=1; SET CURR START[$ARG[0]]; ENDIF 45 VOPEN $ARG[1] 46 END 47 #--------------------------------------------------------------------- 48 PROLOGUE 49 CALL Set_PageNo 50 SET MOVING 0 51 CALL Initial_Display 52 EXECUTE Monitor_Page_Turning 53 END 54 55 #--------------------------------------------------------------------- 56 EPILOGUE 57 VCLOSE 58 END 59 #--------------------------------------------------------------------- |
|
1 ACTION Small_RightPage_CLICK CLICK Small_RightPage 2 CALL Turn_Page 1 # Next page 3 END 4 5 ACTION Small_LeftPage_CLICK CLICK Small_LeftPage 6 CALL Turn_Page (-1) # Previous page 7 END 8 9 #--------------------------------------------------------------------- 10 DEFINE Beginning 0 11 DEFINE End 1 12 DEFINE Current 2 13 DEFINE All_End 3 14 DEFINE Moving 4 15 #--------------------------------------------------------------------- 16 DEFINE CURR $GV[Current] 17 DEFINE MIN $GV[Beginning] 18 DEFINE MAX $GV[End] 19 DEFINE ALLMAX $GV[All_End] 20 DEFINE MOVING $GV[Moving] 21 #--------------------------------------------------------------------- 22 DEFINE Previous (-1) 23 DEFINE Next 1 24 #--------------------------------------------------------------------- 25 DEFINE OK 1 26 #--------------------------------------------------------------------- 27 DEFINE MAXELEM 100 28 #--------------------------------------------------------------------- 29 VARIABLE PAGE[MAXELEM] 30 VARIABLE PAGECOUNT VOBJ1[MAXELEM] VOBJ2[MAXELEM] 31 #--------------------------------------------------------------------- 32 # $ARG[0]=Scene segment 33 # $ARG[1]=VObject1 $ARG[2]=VObject1.X offset $ARG[3]=VObject1.Y offset 34 # $ARG[4]=VObject2 $ARG[5]=VObject2.X offset $ARG[6]=VObject3.Y offset 35 ACTION Set_Page 36 SET PAGE[PAGECOUNT] $ARG[0] 37 SET VOBJ1[PAGECOUNT] $ARG[1] 38 SET VOBJ2[PAGECOUNT] $ARG[4] 39 MOVE $ARG[0]:0 0 Page 40 MOVE $ARG[1]: $ARG[2] $ARG[3] Page 41 MOVE $ARG[4]: $ARG[5] $ARG[6] Page 42 SET PAGECOUNT PAGECOUNT +1 43 END 44 #--------------------------------------------------------------------- 45 DEFINE Page_Turn Small_Book Small_LeftPage Small_RightPage PG 46 DEFINE NEXTPG $ARG[0] 47 ACTION Display_Page 48 IF (NEXTPG>ALLMAX) | (NEXTPG<1) | (MOVING==1) 49 EXIT 50 ENDIF 51 SET CURR NEXTPG 52 IF (CURR>MAX) | (CURR < MIN) 53 SET MOVING 1 54 EXIT 55 ENDIF 56 TEXT PG "%2d" CURR 57 SCENE Page Page_Turn PAGE[CURR-MIN] VOBJ1[CURR-MIN] VOBJ2[CURR-MIN] 58 END 59 #--------------------------------------------------------------------- 60 ACTION Turn_Page 61 CALL Display_Page CURR + $ARG[0] 62 END 63 #--------------------------------------------------------------------- 64 ACTION Page_CLICK CLICK Page 65 CALL Turn_Page Next 66 END 67 #--------------------------------------------------------------------- 68 ACTION Slide_Exit_Processing 69 VCLOSE 70 END 71 ######################### 72 ######################### 73 PROLOGUE 74 SCENE Page Page_Turn 75 CALL Set_All_Pages 76 EXECUTE Initial_Display 77 END 78 #--------------------------------------------------------------------- 79 ACTION Initial_Display 80 CALL Display_Page CURR 81 END 82 #--------------------------------------------------------------------- 83 EPILOGUE 84 CALL Slide_Exit_Processing 85 END |
|
An Operating System Born in Japan: 1B was born out of the TRON Project, which is Japanese independently developed computer technology. In its design, we ceased using as is unfamiliar English technical terms, such as file and directory. |
|
Standardizing Operations in a Friendly Manner: In 1B, we have standardized basic operations with TRON operation methods. For example, with characters and pictures, and also with windows, the operations for moving them are all the same. For character editing, just pull as is the selected characters. Furthermore, even moving and copying to another window is possible with the same operation. |
|
You Can Add Electronic Footnotes One after Another: Inside text or a picture, we can enter "electronic notes" that show the whereabouts of a more detailed explanation. DoubleClick_This_VObject "I want to arrange this complicated data nicely," "I want to smartly express a reference to another document," things that have been difficult with a personal computer up to now, are easy with 1B. |
|
References: Electronic Stationery 1B Primer: BTRON, a Tool for Thinking, Personal Media Corporation, 2,060 yen Invitation to BTRON, General Editor Ken Sakamura, Personal Media Corporation 400 yen TRONWARE, Vols. 1~30, Personal Media Corporation |
____________________
[1] OHP: Overhead Projector: this is equipment that projects characters and pictures written or drawn on transparent sheets onto a screen.
[2] As to the spread of DTPR, that color notebook personal computers have also become cheap is probably a great factor. If you try doing a color presentation without using a personal computer, it comes down to using slides. However, making these takes quite a lot of time and expense.
[Translator's Note 1] The translations of the contents of these four slides are given at the end of this article in the tables with brown backgrounds.
[Translator's Note 2] Note that Fig. 7 shows the virtual object "SCRIPT: OHP#2," which is different from the virtual object name in the text and the source code given below in Program 3. This appears to be a mistake on the part of the author.
The above article on MicroScript appeared on pages 34-39 in Vol. 30 of TRONWARE . It was translated and loaded onto this Web page with the permission of Personal Media Corporation.
Copyright © 1994 Personal Media Corporation
Copyright © 2008 Sakamura Laboratory, University Museum, University of Tokyo