/demg10 A=(5)  =17 : WI=80 S=100  Graphics Program  Matthew Elton Aug 1987 (os_map = 1780 2byt=8 F code 500 P reserved 20 Zwnum=reserved dlineno=reserved+4 nmem1=reserved+10 xpixsize=reserved+6 numpix=reserved+7 errc=reserved+14 scr 512  screen 4 !screen=scr  loc1 5,loc2 5 asm demo *ERASE DEMF *ERASE CLIVE.BIN *ERASE ZPIC2.BIN *ERASE SPREAD.BIN *ERASE LETTER.BIN *CLI .*CDIA A=(0)   asm Z%=2  pass= 0 Z% Z% "P%=code ,[ 6OPT pass @EXX:POP HL:LD SP,HL:EXX:RET J\64 pixels T.MP_GRA 3^EXX:LD HL,0:ADD HL,SP:LD SP (&1FFE):PUSH HL:EXX hLD BC 3 \MP_GRA rLD A (wnum):LD L 64 |OPT os(os_map) \ d_reg EXX:POP HL:LD SP,HL:EXX:RET \ .up_scr 3EXX:LD HL,0:ADD HL,SP:LD SP (&1FFE):PUSH HL:EXX LD HL,(screen) LD DE,0 .sc_lop PUSH HL:PUSH DE LD A,(wnum):LD BC 1 OPT os(os_map) POP DE POP HL INC DE LD BC,byt ADD HL BC &LD A,E 0CP 64 :JR NZ sc_lop DEXX:POP HL:LD SP,HL:EXX:RET N\ X.cls_scr bLD HL,(screen) lLD A,0 vLD (HL),0 LD D,H:LD E,L INC DE LD BC,511 LDIR RET \ ]   : * graphic > 1,"7",35,"1" H 33,32,32+80,32+8,3 R 1: "2I1" \ 1:"4+TUL" Df 0,0);Z$;"2JC";"The Z88 Portable Demonstration Program";(13); -p Z$;"2+R";Z$;"2A";(112);Z$;"R";Z$;"2JN" z 1:"4-TUL" % 1,"6",35,"1",33,33,32+80,32+7  1:"2I1"  1,"6",35,"5"  32+50,32,32+44,32+8   256x64 pixels matinit updt  :   matinit  cls_scr $?wnum="5" . MP_GRA 8updt B L updt V up_scr ` j  os(arg)  argh argh = arg 256 " arg < 32 "OS CALL ERROR": 3 argh=0 arg/3 <> arg 3 "OS CALL ERROR": O argh<>0 ((argh/3 <> argh 3) (arg/2 <> arg 2)) "OS CALL ERROR": [ OPT pass RST &20 ] K argh [ OPT pass: B argh: B arg 256 :] [ OPT pass : B arg : ] =pass :  readin(A$,addr) A=(A$+".BIN") ( line=0 63 2 bytes=0 7 <addr?(line*byt+bytes)=#A F bytes P line U#0 Z d: x demo Z$=(1) graphic   kpretty(" This is the "+Z$+"BZ88 Portable"+Z$+"B. It weighs about 2lbs and comes with twelve built in") [pretty("programs. These include a wordprocessor, spreadsheet, database, diary, alarm") Qpretty("clock, calculator, calendar, BASIC language and computer terminal.") A=(2*S)  Npretty(" The Z88 has a screen width of more than 100 characters across.") *CLI .*DEMF A=(0)  Ppretty("The Z88 has a graphics area on the right hand side of the screen.") pretty("The graphics area can be between 0 and 256 pixels across. The wordprocessor and spreadsheet, PipeDream, uses the graphics map to show you what a document will look like when printed.") ,readin("spread",scr) 6 @A=(S) UJpretty(" This is what a "+Z$+"Bspreadsheet"+Z$+"B will look like when printed.") TA=(S) ^updt hreadin("letter",scr) rA=(2*S) t (11); | (13);75," ");(13); Ppretty(" This is what a "+Z$+"Bletter"+Z$+"B will look like when printed.") A=(S) updt readin("CLIVE",scr) A=(2*S)   /pretty(" The graphics map has many uses.") A=(S) updt readin("ZPIC2",scr) A=(2*S) updt A=(5*S)  : :  pretty(A$)  A  I=1 (A$) A=(6)  A$,I,1);  I   : : : > /pipeonly A=(0)  =17 :  DLD L=400 (S=100 "2ET$=Z$+"R End of Text "+Z$+"R" .<D1$="12.12.1066 The Battle of Hastings " .FD2$="11.11.1918 The End of the Great War " .PD3$=" 10.4.1969 The First Man on the Moon" .ZD4$=" 22.8.1485 The Battle of Bosworth " d Matthew Elton xdemscr # 0,3);Z$"BThe Z88 Portable "; A=(L) pipedemo demscr  U "The Z88 comes with a ";Z$;"BCalculator";Z$;"B and a ";Z$;"BCalendar";Z$;"B. "; A=(L) : C " The calculator features unit conversions and 10 memories. "  9 "The calendar allows you to search for any date. "; A=(L) *CLI .*CLIS A=(0) demscr S 0,3);"PipeDream can sort alphabetically, numerically and chronologically. "; "A=(L) ,pipedemo2 1demscr 3*ERASE CLIS 6*CLI .*CDEM @A=(0) B T: h pipedemo rpip1 | 7,3);ET$: 7,2); Pslow("This is PipeDream. It is a wordprocessor, spreadsheet and database.")  7,4);ET$ / 0,3);" "  0,3);" 2 "; Dslow("There are menus which list all of PipeDream's commands.") A=(L) blockp A=(L) cursorp A=(L)   pipedemo2 pip1  7,3);ET$: 7,2); *slow("Here is a chronological sort.") &A=(L) 0dates1 1 7,3); :A=(L) DR$=Z$+"R"+Z$+"2AE"+Z$+"R" N 7,3);R$ O 7,3); XA=(S) b I=4 6 l 7,I);R$ v w 7,3); A=(L)  0,3); dates2(Z$+"R",10)  7,3); A=(L)  0,3); dates2("",0)  7,3); A=(L)  :  dates1  5,3)"2 "D4$  5,4)"3 ";D3$  5,5)"4 ";D1$  5,6)"5 ";D2$   7,7);ET$;: 7,3);: :   dates2(Q$,Q) * 5,3)"2 "Q$" "D1$ 4 Q$;:A=(Q) > 5,4)"3 "Q$" "D4$ H Q$;:A=(Q) R 5,5)"4 "Q$" "D2$ \ Q$;:A=(Q) f 5,6)"5 "Q$" "D3$ p Q$;:A=(Q) z 1:"2-R";  7,7);ET$;: 7,3);   slow(A$)  I  I=1 (A$)  A$,I,1); Q=(10)  I   pip1 menuins(1,0) ) 1,"7","#","1",32,32,32+94,32+8,0  1:"2H1"   1:"3+CS" c " A...........B...........C...........D...........E..........";Z$;(250);"F" $ 0,0);"A1" . 0,2);" 1 "; 8 B: LZ$=(1) VC$=Z$+"2JC" '` 1,"6","#","2",128,32,32+9,32+8 j 1:"2H2" t DEFINE CHARS ~L$=Z$+(240):R$=Z$+(241) U$=Z$+243:D$=Z$+242 Q$=Z$+(42):I$=Z$+(43) E$=Z$+(225) T$=Z$+(226) X$=Z$+"2JL" Y$=Z$+"2JR" +B$=Z$+"2L"+(33)+Z$+"2R"+(32+25)+(12) /H$=Z$+"3@ "+Z$+"R"+Z$+"2A"+(32+27)+Z$+"R" S$=Z$+45  AP$(2)  AP%(2)  TN$(2,7) *W1$=Z$+"2H1":W4$=Z$+"2H4":W5$=Z$+"2H5" APC=-1  APC=APC+1 ( AP$(APC) 2 AP%(APC) < AP%(APC)=0 DdE F I=1 AP%(APC) P TN$(APC,I) Z I d AP$(APC)="Z88 DEMO" n Start Here x   Data for Menus  D,0  "PIPEDREAM" 4 7,BLOCK,CURSOR,EDIT,FILES,LAYOUT,OPTIONS,PRINT  "Z88 DEMO",1,INFO   activwindow(AN,HN)  I,J  1:"2I2";  + Z$"3+TU"Z$"2-G"AP$(AN)Z$"2-U"Z$"2+G";  AP%(AN)=0  Z$;"3@ ";  I=1 AP%(AN)  J" I=HN Z$;"T";Z$;"B";Z$;"G";TN$(AN,I);Z$;"T";Z$;"B";Z$;"G";: TvF , TN$(AN,I); 6 I @ J: T menucls ,^ 1,"7","#","5",32+84,32,32+10,32+8,0 h 1:"2I5" 'r 1,"6","#","1",32,32,32+84,32+8 | Z$"2H1":   menuins(AN,TN)  I,J activwindow(AN,TN)  TN=0 menucls: + 1,"7","#","5",32+85,32,32+8,32+8,1  Z$"2I5"  C$;   1,229,13,10  1:"2+T";  "ADVANCE"  1,240,1,241,1,242,1,243 : "SELECT"  1,225,13,10  "ACTION" & 1,228,13,10 0 "RESUME" ): 1,"7","#","1",33,32,32+27,32+8,1 ,D 1,"7","#","4",32+29,32,32+27,32+8,1 ,N 1,"7","#","5",32+57,32,32+27,32+8,1 X Z$"2I1"Z$"2I4"Z$"2I5" b l: v demscr menuins(2,0) ' 1,"6","#","1",32,32,32+94,32+8  1:"2H1": 1:"2G+"  1,"7",35,"1"  33,32,32+80,32+8,3  1: "2I1"  1:"4+TUL" < 0,0)C$"The Z88 Portable Demonstration Program";(13); - Z$;"2+R";Z$;"2A";(112);Z$;"R";Z$;"2JN"  1:"4-TUL" % 1,"6",35,"1",33,33,32+80,32+7  Z$"2I1"  C$:   :  blockp  menuins(1,1) $ W1$;B$; . X$"Mark"Y$;I$"Z" 8 H$; B X$"Clear Mark"Y$;I$"Q" L X$"Copy"Y$;I$;"BC" V X$"Move"Y$;I$;"BM" ` X$"Delete"Y$;I$"BD" j X$"Sort"Y$;I$;"BSO" t X$"Replicate"Y$;I$;"BRE" ~ Z$"2H4"B$;  X$"Search"Y$;I$"BSE"  X$"Replace"Y$;I$"BRP"  X$"Next Match"Y$;I$"BNM"  W5$;B$; X$;"Word Count"Y$;I$;"BWC"  X$;"New"Y$;I$;"BNEW"  X$;"Recalculate"Y$;I$;"A"   :  cursorp  menuins(1,2)  Z$"2H1"B$;  X$"End of Slot"Y$;I$;R$ H$;  X$"Start of Slot"Y$;I$;L$  X$"Top of Column";Y$;I$;U$ "( X$"Bottom of Column"Y$;I$;D$ !2 X$"Save Position"Y$;I$"CSP" $< X$"Restore Position"Y$;I$"CRP" F X$"Go to Slot";Y$;I$;"CGS" P X$"ENTER"Y$;E$ Z Z$;"2H4"B$; d X$"Next Word";Y$;S$;R$ n X$"Previous Word"Y$;S$;L$ x X$"Screen Up"Y$;S$;U$  X$"Screen Down"Y$;S$;D$  X$"Cursor Right";Y$;R$  X$"Cursor Left";Y$;L$  X$"Cursor Up";Y$;U$  X$"Cursor Down";Y$;D$  Z$"2H5"B$;  X$"Next Column"Y$;T$ ! X$"Previous Column"Y$;S$;T$ X$"First Column"Y$;I$"CFC"  X$"Last Column"Y$;I$"CLC"  /diaryonly A=(0)  =17 :  DlB (ED$=Z$+"3+RT END OF TEXT "+Z$+"3-RT" ,(EB$=" "+(13) 2demscr <L=400 FS=100 QP 0,3);"The Z88 comes with a "Z$"BDiary"Z$"B which can be rapidly searched." ZA=(L) ddiarydemo ndemscr Tx 0,3);"The Z88 can store diaries and documents in the compact form of a file." A=(L)  *CLI .*CLIT A=(0) *ERASE CLIT *ERASE DIARY *CLI .*CPIP A=(0)   slow(A$)  I  I=1 (A$)  A$,I,1); Q=(10)  I  :  diarydemo "menuins(0,0) ), 1,"7","#","1",33,32,32+79,32+8,1 6 Z$"2I1"Z$"3+CS"; ,@ 1,"7","#","3",32+81,32,32+12,32+8,3 +J Z$"2I3"Z$"4+TLR"C$" DIARY DATE "Z$"R" TA$=$ ^ I=1 3 &hA=A$," "):P$=A$,A-1):A$=A$,A+1) r P$ | I !A=A$," "):P$=A$,A-2): YEAR  P$   "INSERT"  "MODE"  Z$"2H1";  0,1);ED$: 0,0); \slow("This is the Diary. You can enter as much as you want for each day of the Diary.")  0,2);ED$: 0,1);EB$; \slow("You can search for any entry, on any day. The Z88 will print out selected parts")  0,3);ED$: 0,2);EB$; 'slow("of the Diary on a printer.") A=(L)  0,4);ED$: 0,3);EB$; Aslow(" All the Diary's commands can be found in the menus.") Q=(L) &blockd 0Q=(L) :cursord DQ=(L) N lZ$=(1) vC$=Z$+"2JC" ' 1,"6","#","2",128,32,32+9,32+8  1:"2H2"  DEFINE CHARS L$=Z$+(240):R$=Z$+(241) U$=Z$+243:D$=Z$+242 Q$=Z$+(42):I$=Z$+(43) E$=Z$+(225) T$=Z$+(226) X$=Z$+"2JL" Y$=Z$+"2JR" +B$=Z$+"2L"+(33)+Z$+"2R"+(32+25)+(12) /H$=Z$+"3@ "+Z$+"R"+Z$+"2A"+(32+27)+Z$+"R" S$=Z$+45  AP$(2)  AP%(2)  TN$(2,7) * W1$=Z$+"2H1":W4$=Z$+"2H4":W5$=Z$+"2H5" *APC=-1 4 >APC=APC+1 H AP$(APC) R AP%(APC) \ AP%(APC)=0 tDC f I=1 AP%(APC) p TN$(APC,I) z I  AP$(APC)="Z88 DEMO"  :  Data for Menus % DIARY,4,BLOCK,CURSOR,EDIT,FILES  PD,0  "Z88 DEMO",1,INFO   activwindow(AN,HN)  I,J  1:"2I2";  + Z$"3+TU"Z$"2-G"AP$(AN)Z$"2-U"Z$"2+G";  AP%(AN)=0  Z$;"3@ "; $ I=1 AP%(AN) . J8 I=HN Z$;"T";Z$;"B";Z$;"G";TN$(AN,I);Z$;"T";Z$;"B";Z$;"G";: DLD B TN$(AN,I); L I V `: j menucls ,t 1,"7","#","5",32+84,32,32+10,32+8,0 ~ 1:"2I5" ' 1,"6","#","1",32,32,32+84,32+8  Z$"2H1":   menuins(AN,TN)  I,J activwindow(AN,TN)  TN=0 menucls: + 1,"7","#","5",32+85,32,32+8,32+8,1  Z$"2I5"  C$;   1,229,13,10  1:"2+T";   "ADVANCE"  1,240,1,241,1,242,1,243 : "SELECT" ( 1,225,13,10 2 "ACTION" < 1,228,13,10 F "RESUME" )P 1,"7","#","1",33,32,32+27,32+8,1 ,Z 1,"7","#","4",32+29,32,32+27,32+8,1 ,d 1,"7","#","5",32+57,32,32+27,32+8,1 n Z$"2I1"Z$"2I4"Z$"2I5" x :  demscr menuins(2,0) ' 1,"6","#","1",32,32,32+94,32+8  1:"2H1": 1:"2G+"  1,"7",35,"1"  33,32,32+80,32+8,3  1: "2I1"  1:"4+TUL" < 0,0)C$"The Z88 Portable Demonstration Program";(13); - Z$;"2+R";Z$;"2A";(112);Z$;"R";Z$;"2JN"  1:"4-TUL" % 1,"6",35,"1",33,33,32+80,32+7  Z$"2I1"  C$:  ": J blockd Tmenuins(0,1) ^ W1$;B$; h X$"Mark"Y$;I$"Z" r H$; | X$"Clear Mark"Y$;I$"Q"  X$"Copy"Y$;I$;"BC"  X$"Move"Y$;I$;"BM"  X$"Delete"Y$;I$"BD"  X$"List/Print"Y$;I$"BL"  Z$"2H4"B$;  X$"Search"Y$;I$"BSE"  X$"Replace"Y$;I$"BRP"  X$"Next Match"Y$;I$"BNM" " X$"Previous Match"Y$;I$"BPM"  :  cursord menuins(0,2)  Z$"2H1"B$;  X$"End of Line"Y$;I$;R$  H$; & X$"Start of Line"Y$;I$;L$ 0 X$"First Line"Y$;I$;U$ : X$"Last Line"Y$;I$;D$ !D X$"Save Position"Y$;I$"CSP" $N X$"Restore Position"Y$;I$"CRP" X X$"ENTER"Y$;E$ b Z$;"2H4"B$; l X$"Next Word";Y$;S$;R$ v X$"Previous Word"Y$;S$;L$  X$"Screen Up"Y$;S$;U$  X$"Screen Down"Y$;S$;D$  X$"Cursor Right";Y$;R$  X$"Cursor Left";Y$;L$  X$"Cursor Up";Y$;U$  X$"Cursor Down";Y$;D$  Z$"2H5"B$;  X$"TAB"Y$;T$  X$"Today"Y$;I$"CT" % X$"First Active Day"Y$;I$"CFAD" $ X$"Last Active Day"Y$;I$"CLAD" % X$"Previous Active Day"Y$;Q$;R$ ! X$"Last Active Day"Y$;Q$;L$  X$"Previous Day"Y$;Q$;U$   X$"Next Day"Y$;Q$;D$  /diary%15/2/1987 Matthew's Birthday - Remember to buy a present. %15/8/1987 This is a short Diary file. You can put as much information of each diary page as you want. The DIARY has a powerful search facility. You can search for any word or phrase in the diary using the commands in the menus. 10:00 Went to buy a Z88 12:00 Brought Z88 home and read the manual 1:00 Had some lunch 3:00 Wrote some letters on the Z88 and started a DIARY /cdemO.>:nul #F |efdemf~e~e |EFDEMG10~E~E #B |~XLOAD"DEMG10"~E *ERASE DEMG10~E RUN~E /cdiae.>:nul #F |EFdiaryonly~E~E |EFdiary~e~e |efclit~e~e #B |~XLOAD"diaryONLY"~E *ERASE diaryONLY~E RUN~E /cpipR.>:nul #F|efCLIS~e~e|EFPIPEONLY~e~e #B|~XLOAD"PIPEONLY"~E *ERASE PIPEONLY~E RUN~E /clitG#D .d 400 |FL |~L |D D .D 30 i .D 30 a .D 30 r .d 30 y .d 300 ~E |CLAD .d 300 ~d .d 30 ~d .d 30 ~d .d 30 ~d .d 30 ~d .d 30 ~d .d 30 ~d .d 30 ~d .d 30 ~d .d 30 ~d .d 30 ~d .d 30 ~d .d 300 |bse .d 200 B .d 30 i .d 30 r .d 30 t .d 30 h .d 30 d .d 30 a .d 30 y .d 300 ~E .d 400 #I .d 100 |K .d 50 I .d 50 L .D 50 L .D 50 .D 300 |[ /clisQ#R~E .d 100 1 .d 100 5 .d 100 0 .d 100 / .d 100 8 .d 200 = .d 200 U .d 100 ~R .d 100 ~D .d 100 ~D .d 100 = .d 400 #C .d 400 ~E |D 1 .d 50 5 .d 50 .d 50 F .d 50 e .d 50 b .d 50 .d 50 1 .d 50 9 .d 50 6 .d 50 9 .d 150 ~E .d 500 ~E |D 2 .d 50 2 .d 50 .d 50 A .d 50 u .d 50 g .d 50 .d 50 2 .d 50 0 .d 50 0 .d 50 1 .d 150 ~E .d 500 |[ /Zpic2.bin?a   8 p a?a   8 p a?  |  @ 6 !@ |    mmm mm mm m mm /letter.bin?m=/mw{{۾w^ۿ߶owp /spread.binx /clive.binϕUsͪUA{㪪/UIUg着UWߛU]/5?v)3UW)𳂪˳_UTz!Ȫ0ׁU@<"O9{$!]93֡`N!jOGUH?!j