Buffer HkJ[[*["!:[$ !:[7V0[!ejsw-code ~~`abcdefg ` a b c d e f g@`@a@b@c@d@e@f@g```a`b`c`d`e`f`g`abcdefg`abcdefg`abcdefg`abcdefghijklmno h i j k l m n o@h@i@j@k@l@m@n@o`h`i`j`k`l`m`n`ohijklmnohijklmnohijklmnohijklmno![6+61[o G` N}q#| AIR+++++ Press ENTER to Start +++++ JET-SET WILLY by Matthew Smith  1984 SOFTWARE PROJECTS Ltd . . . . .Guide Willy to collect all the items around the house before Midnight so Maria will let you get to your bed. . . . . . .+++++ Press ENTER to Start +++++Items collected 000 Time 00:00 mGameOver000 7:00a 7:00aEnter Code at grid location Sorry, try code at location Q<3Q<3Q<3Q<3Q<3Q<3Q<3Q<3L<3L<3L9-L9-Q@-Q<3Q<6[@6fQ2̅>2υ>!2 !]"Ӆ!|60#60#60&:o2ޅ, !!@@6!!`ZaZ6F!T`P ̀X(F(B (>-(:$(6()(,((>%{O!1 B@(H͛zZDX >2΅!͢2!`ZaZ6O:!T_`P ̀:2ޖx :<2 !!Z: g.!>n˽&)))Nq##= !υׅ3!PP6! P̀!T`P ̀:ހy2օí:̅!PG:`_V##͋!^\!p`:߅Ӎ:υ԰:߅ȕ:߅̄4;ѓ!`@:߅!҅w:ͅ(=2ͅ8!\\w!\X!yP̀!|pP̀:˅<2˅ Y!4~: K604~6 =60~1 4~3 (~pʇ6 616p4~: 6061x_xʇ:<2( x(Ix ,  : !X~~W~渲w#|[ !Z:ހ:х!x( F ~wˆN 42:<2~_!_:̅DW:ހZ Z xO—W: —x/2 : ʭ: ­:υ­:_!xݾ(ʭݾʭ2íxݾ(ʭݾʭ2í:<2í>G!XXw_/WK B {=? !̅~J5!ׅυ!@@62@!HV`!HV:O o g@V:/_@C !XX: Gw2Y2Y2Y2Y:2 !t@̀!x@̀y@2X<@2X<@2X<@2X<@2X<@2X<@2X<@2X  ʇk!^>p2]K!_>x2]Y~!6K~## M!!^~~~~#}(:ـ( *׀G:̀w#:݀*ۀ:ڀ_:݀G:ĀwOƠ_w#:օ=Ԏ:х S:Յ!υwҰ͜:ʼ#ʼ:Յ<2ՅD<W :ހB :Յʰ( ¼:υ %*Ӆ@LҔ:(#:( :+ԎԎ:хʼ!Ѕˎ:хʶ< > 2хW :ހB :υ2υo\g:Ӆo"Ӆ>2х>2х:υ2υ͜>2х!Ѕˎ:օ=(:х ҷ2х:̀(# :ր_x _:߅_x_x_x_x_:΅( x/_{**(2{(ٯ2:ЅO!! ~2Ѕ~x xG(:΅(6xg(-:߅O &2Յ2<2х:օ= >2օ:υ2υ!Ѕ:Ѕ:օ=:ЅB:҅(=2҅:х $*Ӆ:ڀ=_:Ā  :ڀ *Ӆ}ʊ + ::υ)G( :ȷRR"Ӆx2υ>2҅:҅(<2҅:х !*Ӆ:ڀ=_:Ā  :ڀ(*Ӆ ##}ʞ ::υ)G( :ȷR:R+"Ӆ2҅x2υ>2х!~ʶ3~( ~(01 +(0"~ 0 >0wݾ¶~wö~ #~ w`8o~ݾ(5`6Z~ w0L~ݾ(4=6a7~w(~ w~݆wݾ0 ݾ(0~w~DwĐ!~ʳʤ(a^o~o{\g~8GO~8Oq#qq#q~(q#q~ݦݶ_V&n~#foV·ó~ 5,4~ :ހA ó³^݆o{\g6~ 5~wg%~w$~ݦ·6$~wó!6 ~w6~݆of:օ ~(B~ 2օ ݾ 3 F(-F~88 @8C҅}2υ͜~w~ ݆o&^˽~('G~(F(5~(4~ ݾ(4 ö:օ( <2օ D F(>:ЅO(7ݮ=!օw:O: ~ 06 ~ݾ8(6:υ2υ2х‘w:w#ww#ww#w&:oN˹: @ p~\W$^% =!|4~: 60+:ހ_>G{ :ޅ<2ޅ >2߅˶":˅O~`W!͛, A(w,A(w-$| |g} o |gЯ:2 :Ӆ2Ӆ:2 :Ӆ2Ӆ:2 :ӅƠ2Ӆ>]2ԅ>2υ2х:2 2υ:х 0>2х:Ӆ2Ӆ>\2ԅ*׀|pg]T:ـG:ր ~$$N q,~$$N: # _:߅ 5:˅_:υ(0!nhV·!EE"n]!"]:Ӆ>2߅: !:Ӆ2˅>2߅: !:˅_:߅ !Ђh!"]"]*Ӆ:ڀ@_:Ā :х :҅G:ڀ= G*Ӆ##:υO#: y(:w:ʶ:υ&o:Ѕ_:҅_:  {_:ӅO~fow#w##~͑#zW &o)))~#~d^S Sy2  ɖ#:΅(gx_Wˢ˚C Q= !^X!@@6xW(((%((-%%$(--%$((-%%$$$-%$$$))--,, $$ ))-- $$ )- $ )-- $ )) $ $$$FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEAACCDDEEAACCDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEGGGGAyBz;<AABBNZ,ENDPAUSEJ INC EJ JR NZ,PAUSEJ INC DJ JR NZ,PAUSEK C HB5 C<<~~<vnw @p`p` ?o`[p1 ````<<~,|<<~~<nv+K x`[,@ʠ<2@~( Zz<*@*@"@~ #####z<:@=ʾ+J=_-8&â (O(,*@(Z—|J"@2@"@37#~,xx+͔ (_  >2@| A# ̈́2@+ i! ` +J!<" @{?2@" 6$P*X&``%@ @%@ @ed j&+m`fpdp@ l0 ' ``$   ` P p0j e0@#@e n`e Ep`fK`JJ@Efn0+@&$*0g`c0 g@ d0fPe`p0`Ae@# jЁPP ! ! A a#p&p)p$p"p%p&`Ppc0 f0 g` b je@fd`dpk`PePc f0jd0c p cc %%( ..&  ,111*48ɳ{FdͶ<Ц7z"Cf"pejIZz%baDgB\:ȷ?0 /????????G????/;/]???*|?|?**H,K.?|%<2P @hph4= Ht=>O)< L "Tqt";.$ TtQTR# TTK+lT@tQTR# T };| ;|D;  7= x=D}  :=;u =p =Ew=  ;u;u ;t$=;u. 7($SdJ++jJi$$38sd&IRK+*I$ xsΤ%ɕUUԕ%s0&gJ*ԫT+RKI$&3( 3?saa@@@@  ;p00``@ 0 08 0  00000xH@{{@ 6g@àqиh\4,: lP(hhhh((hhhh(Pl ,:\4hqàg@6 ~~$$BB&@90  @@ pP0Pp pp``d     ! @R//___]]L# ??@ ( t t01J~~~8|~mD@l@| || |20l8` PP@@߀Dw  //O__@Z]? p x3G_𾠽`Z]@?x!O__V_#T ~p0#DD""DD#00 CB##BC 0@>x|<~|?Se'qUnvS8x  ?Qd&ŧ]w_rN88  x?P e,:Z^,<x  ?Qd&ŧ]w_rN88 * ?*o8@  8Pp`0`8T\X0~8*U:? ~??=? @@` `PPpTh0T? @@O@@  ` !  t4t6z:0~|X &'' p`xp`xpax@?U@@=P>PT(4xT  VU~""PPj~DD,@?*U+_  h | @*@(_ P BEE b<{GʠPʠE@EBeo|z: @``-h/x/x/x/xy pP vnvnvnvnvn*'`QKА蔸ؑUK+`$ 02h@*EHBU (T pT  U)U $8P<>~`<?/`   ppx||; >l???V@   `'H2zzynp <nwb,4Fv<HD |5Fv<44FFvv<<>@0@"? Fv<` 5\ u'ux%@` 5\ Mx P ` 5\ ۨx%@ ` 5\ ۷۷x BAD?1jV 6lY11*Tq2LXL2?1*T0]YH,4_?.t*Tq^Hx1*^J5\m\nc.IY+ @TzR:uQ:vƻtA c?H0תEhH@@P @ *" ( ת*TDBJ" @ 6@~U** ?@???5@* hP @ @@0TPP P *U@+D@_@ U@*>A@*" _P*@*@ @@TD T@@p T"}TT |o@u@@P6]p7/TP=~j( ~V((P/* @ lX<.::Z]OC!"<? `@ @ 0 @0@`Pht< x%"t .<0aD.P  @@ ``pp@@<+t\\ZDxPx !-! 7@ @@@. +#P`88 n>>n0x5=}? p??}{;?8x?|;77??8??{w7?8@`S`) p*abp0V0V 0*d`p``+VjEՂ"``p0V0V *"t8 D+/D,P*UDE D+/DR*U@E/_0dB2`,P*UDE /PV"$RT?DR*U@EUUUUUUUU The Off Licence Dl@"" 0C333_ _<~bbb~ ,' ***UUUU The Bridge Dr`@F"w""w"/H0H0 27,@FOy__@??\@UUUUUUUU Under the MegaTree D׳um\B] FIj;:kB$<</ *00 00X0 000 00X0 @PUUUUUUUU At the Foot of the MegaTree  (DUUnt8nt80 _@\"!".5 TUUZUU The Drive UUU pww; }D* j@pp twB{UU__ -$TATU* * * ( (* The Security Guard UUU ƕ6@ BoUU_^ UDCDTD@U 0E1 3 3 Entrance to Hades 4P A(c82\X0(XH0@@_-TTTP Cuckoo's Nest 06#`<84 D 0 0_ ~~@S)UUUUQ_@__$")@@@UP@@ A bit of tree R)kfikmU D$@ 4_%#*heE@@ @%@U   @@ Orangery J$UU$%UI"A>j%D @&ƪ*Y$\__.U*E*8$+a< Z J Z @  Priests' Hole UU]p*"D"D'&, % P PPPP*((* Emergency Generator /ffffffff3QQ ?? 0TT((i_R_(&!T P PP P P@PBP@Dr Jones will never believe thisU*UD"D"C"D"@$H$ &U_ X_xL2 )'" UVPPUeUVY The Attic l"D$DU[BS/Blocks SNEdU ; S.Blocks - Blocked tape load and save ; J.G.Harston, 25 June 1986  (; Saves and loads data in blocks of 256 bytes 2 <; Block header: F; 00 P; File type Z; Filename d; Block length - 256 for full block, <256 for last block n; Block start address x; Block extra address ; ; Block data ; FF ; as per length START EQU 23296 ; Data start LENGTH EQU 23298 ; Data length HEADER EQU 23300 ; File header to save/load HEADER2 EQU HEADER+17 ; Loaded header ORG #F800 SAVE JP DOSAVE ; Entry block LOAD JP DOLOAD  DOSAVE LD HL,(HEADER+11) ; Get save length  LD (LENGTH),HL " LD HL,(HEADER+13) ; Get save start , LD (START),HL 6SA_LOOP LD HL,(LENGTH) ; Get remaining length @ LD DE,256 ; Prepare to save 256 bytes J LD A,H T OR A ; Is length<256 ^ JR NZ,SA_LEN ; Still more than 256 to do h OR L r RET Z ; No more to save | LD D,H  LD E,L ; DE=remaining length  LD L,0  LD (LENGTH),HL ; Force loop to finish SA_LEN LD (HEADER+11),DE ; This block length  LD HL,(START) ; Get data start  LD (HEADER+13),HL ; Store in header  LD IX,HEADER ; Header address  CALL SA_ROM ; Save header and data  LD HL,(START)  INC H  LD (START),HL ; Update address  LD HL,(LENGTH)  LD A,H  OR L  RET Z ; All done  DEC H & LD (LENGTH),HL ; Update length 0 JR SA_LOOP ; Loop for all blocks :SA_ROM PUSH HL ; Stack address D JP #0984 ; Jump to save N XDOLOAD LD HL,0 ; Use file's start address b LD (HEADER+11),HL ; Use file's length l LD IX,HEADER ; Point to header to search for v CALL #0761 ; Load a block  LD A,(HEADER2+12) ; Get length high byte  AND A ; Last block has <256 bytes  RET Z ; No more to load  LD B,64 ; 64 characters LD_UP LD A,8 ; CHR$8 - move back  RST #10 ; Move up one line to overwrite  DJNZ LD_UP  JR DOLOAD ; Loop until last block loaded  S/Buffer L ; S.Buffer - Buffer tape load and save ; J.G.Harston, 20 June 1986  (; Saves and loads data in blocks of 256 bytes 2 <; 23296=Data length (must be multiple of 256) F; 23298=Data start P; 23300=Block type Z d ORG #FE80 nSAVE LD DE,(23296) ; DE=Data length x LD HL,(23298) ; HL=Start address SAVE_1 PUSH HL ; Save start address LD (TABLE),HL ; Store start address PUSH DE ; Save data length LD DE,TABLE+2 LD BC,256 LDIR ; Copy 256 bytes to TABLE+2 onwards LD IX,TABLE ; Point to block to save LD DE,258 ; 2 byte address + 256 bytes data LD A,(23300) ; Get block type CALL #04C2 ; Save to tape POP DE ; Get length back POP HL ; Get address back  INC H ; Update address  DEC D ; Update length remaining  JR NZ,SAVE_1 ; Loop for each 256 bytes " RET , 6LOAD LD IX,TABLE ; Point to data buffer @ LD DE,258 ; 2 byte address + 256 bytes data J LD A,(23300) ; Get block type T SCF ^ CALL #0556 ; Load a block from tape h JR NC,LOAD ; Loop until block loaded r LD DE,(TABLE) ; Get this block's data address | LD HL,TABLE+2 ; Point to data  LD BC,256  LDIR ; Copy 256 bytes to destination  JR LOAD ; Loop to load another block  TABLE DEFW 0 ; Block address  ; 256 bytes of data 'S/DISSA Lq ; S.DISSA - Z80 DISSASEMBLER ; J.G.HARSTON ; 9 MAY 1987 4.21 PM (; INCOMPLETE 2 < ORG #A01E F LD L,(IX+0) P LD H,(IX+1) Z LD E,(HL) d INC HL n LD D,(HL) x PUSH HL CALL DISS POP HL LD (HL),D DEC HL LD (HL),E RET DISS CALL ADRSP LD BC,#900 LD HL,#2020 BUFFER PUSH HL DJNZ BUFFER LD H,B LD L,C  ADD HL,SP  PUSH BC  EX (SP),HL " PUSH BC , PUSH BC 6 ADD IX,SP @ PUSH HL J LD HL,GROUP3 TTRYNDX CALL FETCH ^ LD B,C h CP #ED r JR Z,CONFLG | INC B  CP #DD  JR Z,CONFLG  INC B  DJNZ TRYNDX  JR NXBYTE NOTNDX LD C,A  LD A,(IX+1)  OR A  JR Z,NODISP  LD A,C  CP #CB  JR Z,GETDIS  AND #44  CP 4  JR Z,GETDIS  LD A,C & AND #C0 0 CP #40 : JR NZ,NODISP DGETDIS CALL FETCH N LD (IX+2),A XNODISP LD HL,GROUP1 b LD A,C l CP #CB v JR NZ,NEWMSK  LD HL,GROUP2 NXBYTE CALL FETCH  LD C,A NEWMSK LD A,(HL)  OR A  JR Z,TABEND  AND C  INC HL NEWMOD LD B,(HL)  INC HL  INC B  JR Z,NEWMSK TRYMAT CP (HL)  INC HL  JR Z,GETNDX  BIT 7,(HL)  INC HL * JR Z,TRYMAT 4 JR NEWMOD >GETNDX LD A,(HL) H AND #7F R DEC B \TABEND POP HL f PUSH DE p PUSH HL z EX DE,HL  LD HL,MONICS  CALL XTRACT  POP HL  LD DE,5  ADD HL,DE  POP DE  LD A,B  AND #F0  JR Z,SECOND  RRA  RRA  RRA  RRA  PUSH BC  LD B,A  LD A,C $ CALL OPRND1 . POP BC 8 LD A,B B AND #0F L JR Z,OPDONE V LD (HL),"," ` INC HL jSECOND LD A,B t AND #F ~ LD B,A  LD A,C  CALL NZ,OPRND2 OPDONE LD A,3  SUB (IX+0)  POP HL  POP HL  POP IX  JR C,OUTEXT  INC A  LD B,A  ADD A,B  ADD A,B  LD B,A SPACES LD A,32  CALL CHROUT  DJNZ SPACES (OUTEXT LD B,18 2PUTOUT DEC SP < POP HL F LD A,H P CALL CHROUT Z DJNZ PUTOUT d RET nGROUP2 x DEFB #C0,#36,#40,4,#80,#2D,#C0,#BE,#FF  DEFB #F8,#06,#00,#33,#08,#38,#10,#35,#18  DEFB #3A,#20,#3F,#28,#40,#30,#00,#38,#C1 GROUP1  DEFB #FF,#00,#00,#24,#07,#32,#0F,#37  DEFB #17.#1F,#36,#27,#0D,#2F,#0B XS/LD-SA LM ; S.LD-SA ; Call SAVE and LOAD code with ; parameters at 23296 ( 2 ORG 65500 <SAVE CALL SETUP F JP #04C2 PLOAD CALL SETUP Z SCF d JP #0556 nSETUP LD A,(23296) ; Block type x LD DE,(23297) ; Data length LD IX,(23299) ; Data start RET S/LOAD N ; S.LOAD - *LOAD command using blocked tape save ; J.G.Harston, 25 June 1986  (; *LOAD filename 2 <; Block header: F; 00 P; File type Z; Filename d; Block length - 256 for full block, <256 for last block n; Block start address x; Block extra address ; ; Block data ; FF ; as per length ORG #5B00 LOAD LD HL,HEADER+1 ; Point to filename LD B,10 NAME LD A,(DE) ; Copy filename from DE CP 33 JR C,NAMEPAD LD (HL),A  INC HL  INC DE  DJNZ NAME " JR NAMEOK ,NAMEPAD LD A,32 ; Pad with spaces 6 LD (HL),A @ INC HL J DJNZ NAMEPAD TNAMEOK LD A,3 ^ LD (HEADER),A ; Set filetype h rDOLOAD LD HL,0 ; Use file's start address | LD (HEADER+11),HL ; Use file's length  LD IX,HEADER ; Point to header to search for  CALL #0761 ; Load a block  LD A,(HEADER2+12) ; Get length high byte  AND A ; Last block has <256 bytes  RET Z ; No more to load  LD B,64 ; 64 characters LD_UP LD A,8 ; CHR$8 - move back  RST #10 ; Move up a line to overwrite  DJNZ LD_UP  JR DOLOAD ; Loop until last block loaded  START DEFW 0 ; Data start LENGTH DEFW 0 ; Data length HEADER DEFS 17 ; File header to save/load HEADER2 DEFS 17 ; Loaded file header S/SAVE =Nm/? ; S.SAVE - *SAVE command using blocked tape save ; J.G.Harston, 25 June 1986  (; *SAVE filename START+LENGTH 2 <; Block header: F; 00 P; File type Z; Filename d; Block length - 256 for full block, <256 for last block n; Block start address x; Block extra address ; ; Block data ; FF ; as per length ORG #5B00 SAVE LD HL,HEADER+1 ; Point to filename LD B,10 NAME LD A,(DE) ; Copy filename from DE CP 33 JR C,NAMEPAD LD (HL),A  INC HL  INC DE  DJNZ NAME " JR NAMEOK ,NAMEPAD LD A,32 ; Pad with spaces 6 LD (HL),A @ INC HL J DJNZ NAMEPAD TNAMEOK CALL HEXRD ^ LD (HEADER+13),HL ; Start h LD (HEADER+15),HL ; Extra r CALL HEXRD | LD (HEADER+11),HL ; Length  LD A,3  LD (HEADER+0),A ; Filetype  DOSAVE LD HL,(HEADER+11) ; Get save length  LD (LENGTH),HL  LD HL,(HEADER+13) ; Get save start  LD (START),HL SA_LOOP LD HL,(LENGTH) ; Get remaining length  LD DE,256 ; Prepare to save 256 bytes  LD A,H  OR A ; Is length<256  JR NZ,SA_LEN ; Still more than 256 to do  LD D,H  LD E,L ; Save remaining length  LD L,0  LD (LENGTH),HL ; Force loop to finish &SA_LEN LD (HEADER+11),DE ; This block length 0 LD HL,(START) ; Get data start : LD (HEADER+13),HL ; Store in header D LD IX,HEADER ; Header address N CALL SA_ROM ; Save header and data X LD HL,(START) b INC H l LD (START),HL ; Update address v LD HL,(LENGTH)  LD A,H  OR L  RET Z ; All done  DEC H  LD (LENGTH),HL ; Update length  JR SA_LOOP ; Loop for all blocks SA_ROM PUSH HL ; Stack address  JP #0984 ; Jump to save  HEXRD LD HL,0 ; Clear HL  LD B,H ; Clear B for addition HEXLOOP INC DE  LD A,(DE) ; Get current char  CALL HEXDIG  RET C  AND 15  LD C,A * ADD HL,HL 4 ADD HL,HL > ADD HL,HL H ADD HL,HL ; HL=HL*16 R ADD HL,BC ; HL=HL+digit \ JR HEXLOOP f pHEXDIG CP "0" z RET C ; Not digit  CP "9"+1  CCF  RET NC ; Digit  SUB 7  RET C  CP "@"  CCF  RET ; Not letter  START DEFW 0 ; Data start LENGTH DEFW 0 ; Data length HEADER DEFS 17 ; File header to save/load *S/TTXT1 F LpH ; TELETEXT SCREEN ; VERSION 1.01 ; 20/3/88; 2:26 am ( 2CHARS EQU 23606 < ORG #FA00 F ENT $ PPR_SCR LD IX,FLAGS Z LD HL,#5800 d LD (ATTR_AD),HL n LD HL,(START) x LD (IX+0),0 LD C,24 LINE_L LD B,40 XOR A BIT 7,(IX+0) JR Z,LINE_2 BIT 6,(IX+0) JR NZ,LINE_2 LD A,#40 LINE_2 LD (IX+0),A LD (IX+2),7 LD A,(IX+4) LD (IX+1),A LD (IX+3),32 C_LOOP LD A,(HL)  CALL PRINT  INC HL " DJNZ C_LOOP , DEC C 6; JR NZ,LINE_LOOP @ RET JPRINT PUSH HL T PUSH BC ^ CALL PR2 h POP BC r POP HL | RET PR2 DEC (IX+1)  AND 127  CP 32  JR C,CONTRL  LD (IX+5),A PRCHAR BIT 7,(IX+1)  RET Z PCHAR2 CALL MATRIX  LD DE,(ATTR_AD)  LD A,D  SLA A  SLA A  SLA A  AND #58  LD D,A  LD B,8 &CHAR_L LD A,(HL) 0 LD (DE),A : INC HL D INC D N DJNZ CHAR_L X LD HL,(ATTR_AD) b LD A,(IX+2) l LD (HL),A v INC HL  LD (ATTR_AD),HL  RET CONTRL LD C,A  BIT 3,A  JR NZ,NOT_COL  AND 7  CP 4  CCF  RL A  AND 7  LD B,A  LD A,(IX+2)  AND #F8  OR B  LD (IX+2),A  LD A,C  AND #10 * LD C,A 4 LD A,(IX+0) > AND #EF H XOR C R LD (IX+0),A \ JR CONT_2 fNOT_CO CALL DO_CODES pCONT_2 LD A,(IX+3) z CALL PRCHAR  BIT 0,(IX+0)  RET Z  SET 1,(IX+0)  RET DO_COD CP 16  JR C,CODE_2  SUB 8 CODE_2 SUB 8  ADD A,A  LD C,A  LD B,0  LD HL,CODE_TABLE  ADD HL,BC  LD C,(HL)  INC HL  LD B,(HL) $ PUSH BC . RET 8CODE_T DEFW FLASH,STEADY,S_BOX,E_BOX B DEFW N_HIGH,D_HIGH,SO,SI L DEFW CONCEAL,JOINED,SEPAR,ESC V DEFW BLACK,BACKGND,HOLD,RELEASE `FLASH SET 7,(IX+2) j RET tSTEADY RES 7,(IX+2) ~ RET N_HIGH RES 7,(IX+0)  RET D_HIGH SET 7,(IX+0)  RET CONCEA SET 1,(IX+0)  SET 0,(IX+0)  RET JOINED RES 5,(IX+0)  RET SEPAR SET 5,(IX+0)  RET BLACK LD C,0 BLK_2 LD A,(IX+2)  AND #C7  OR C  LD (IX+2),A ( RET 2BACKGN LD A,(IX+2) < AND 7 F SLA A P SLA A Z SLA A d LD C,A n JR BLK_2 xHOLD LD A,(IX+5)  JR HOLD_2 RELEAS LD A,32 HOLD_2 LD (IX+3),A  RET SO SI ESC S_BOX E_BOX RET MATRIX BIT 7,(IX+0)  JR NZ,DOUBLE MATX2 BIT 1,(IX+0)  JR Z,MATX3  LD A,32 MATX3 BIT 4,(IX+0)  JR NZ,GRAPHICS " LD BC,(CHARS) , LD L,A 6 LD H,0 @ ADD HL,HL J ADD HL,HL T ADD HL,HL ^ ADD HL,BC h RET rGRAPHI LD C,255 | BIT 5,(IX+0)  JR Z,GRA_2  LD C,#EE GRA_2 LD HL,PAD+8  LD B,3  LD D,A GRA_LO XOR A  BIT 0,D  JR Z,GRA_3  LD A,#F0 GRA_3 BIT 1,D  JR Z,GRA_4  OR #0F GRA_4 AND C  LD E,A  LD (HL),E  INC HL & LD (HL),E 0 INC HL : LD A,B D CP 2 N JR Z,GRA_5 X LD (HL),E b INC HL lGRA_5 RR D v RR D  DJNZ GRA_LOOP  LD HL,PAD+8  BIT 5,(IX+0)  RET Z  CALL D_2  CALL D_2  CALL D_3  LD HL,PAD+8  RET D_3 INC HL D_2 INC HL  INC HL  LD (HL),0  RET DOUBLE CALL MATX2  LD B,4  BIT 6,(IX+0) * JR Z,DOUB_2 4 INC HL > INC HL H INC HL R INC HL \DOUB_2 LD DE,PAD f LD A,(HL) p LD (DE),A z INC DE  LD (DE),A  INC DE  INC HL  DJNZ DOUB_2  LD HL,PAD  RET FLAGS DEFB 0  DEFB 0 ; COUNT  DEFB 0 ; ATTR  DEFB 0 ; HOLD CHAR  DEFB 0 ; MISS  DEFB 0 PAD DEFS 16  ATTR_A DEFW 0  START DEFW #FC00 S/TTXT2 LY ; TELETEXT SCREEN ; VERSION 1.02 ; 20/3/88; 3:26 am ( 2CHARS EQU 23606 < ORG #FA00 F ENT $ PPR_SCR LD IX,FLAGS Z LD HL,#5800 d LD (ATTR_AD),HL n LD HL,(START) x LD (IX+0),0 LD C,(IX+7) LINE_L LD B,40 XOR A BIT 7,(IX+0) JR Z,LINE_2 BIT 6,(IX+0) JR NZ,LINE_2 LD A,#40 LINE_2 LD (IX+0),A LD (IX+2),7 LD (IX+6),255 LD A,(IX+4) LD (IX+1),A  LD (IX+3),32 C_LOOP LD A,(HL)  CALL PRINT " INC HL , DJNZ C_LOOP 6 DEC C @ JR NZ,LINE_LOOP J RET TPRINT PUSH HL ^ PUSH BC h CALL PR2 r POP BC | POP HL  RET PR2 DEC (IX+1)  AND 127  CP 32  JR C,CONTRL  LD (IX+5),A PRCHAR BIT 7,(IX+1)  RET Z PCHAR2 INC (IX+6)  BIT 5,(IX+6)  RET NZ  CALL MATRIX  LD DE,(ATTR_AD)  LD A,D  SLA A  SLA A & SLA A 0 AND #58 : LD D,A D LD B,8 NCHAR_L LD A,(HL) X LD (DE),A b INC HL l INC D v DJNZ CHAR_L  LD HL,(ATTR_AD)  LD A,(IX+2)  LD (HL),A  INC HL  LD (ATTR_AD),HL  RET CONTRL LD C,A  BIT 3,A  JR NZ,NOT_COL  AND 7  CP 4  CCF  RL A  AND 7  LD B,A  LD A,(IX+2)  AND #F8 * OR B 4 LD (IX+2),A > LD A,C H AND #10 R LD C,A \ LD A,(IX+0) f AND #EF p XOR C z LD (IX+0),A  JR CONT_2 NOT_CO CALL DO_CODES CONT_2 LD A,(IX+3)  CALL PRCHAR  BIT 0,(IX+0)  RET Z  SET 1,(IX+0)  RET DO_COD CP 16  JR C,CODE_2  SUB 8 CODE_2 SUB 8  ADD A,A  LD C,A  LD B,0  LD HL,CODE_TABLE $ ADD HL,BC . LD C,(HL) 8 INC HL B LD B,(HL) L PUSH BC V RET `CODE_T DEFW FLASH,STEADY,S_BOX,E_BOX j DEFW N_HIGH,D_HIGH,SO,SI t DEFW CONCEAL,JOINED,SEPAR,ESC ~ DEFW BLACK,BACKGND,HOLD,RELEASE FLASH SET 7,(IX+2)  RET STEADY RES 7,(IX+2)  RET N_HIGH RES 7,(IX+0)  RET D_HIGH SET 7,(IX+0)  RET CONCEA SET 1,(IX+0)  SET 0,(IX+0)  RET JOINED RES 5,(IX+0)  RET SEPAR SET 5,(IX+0)  RET BLACK LD C,0 (BLK_2 LD A,(IX+2) 2 AND #C7 < OR C F LD (IX+2),A P RET ZBACKGN LD A,(IX+2) d AND 7 n SLA A x SLA A  SLA A  LD C,A  JR BLK_2 HOLD LD A,(IX+5)  JR HOLD_2 RELEAS LD A,32 HOLD_2 LD (IX+3),A  RET SO SI ESC S_BOX E_BOX RET MATRIX BIT 7,(IX+0)  JR NZ,DOUBLE MATX2 BIT 1,(IX+0) " JR Z,MATX3 , LD A,32 6MATX3 BIT 4,(IX+0) @ JR NZ,GRAPHICS J LD BC,(CHARS) T LD L,A ^ LD H,0 h ADD HL,HL r ADD HL,HL | ADD HL,HL  ADD HL,BC  RET GRAPHI LD C,255  BIT 5,(IX+0)  JR Z,GRA_2  LD C,#EE GRA_2 LD HL,PAD+8  LD B,3  AND #DF  LD D,A  AND 64  JR Z,GRA_LOOP  SET 5,D GRA_LO XOR A  BIT 0,D  JR Z,GRA_3 & LD A,#F0 0GRA_3 BIT 1,D : JR Z,GRA_4 D OR #0F NGRA_4 AND C X LD E,A b LD (HL),E l INC HL v LD (HL),E  INC HL  LD A,B  CP 2  JR Z,GRA_5  LD (HL),E  INC HL GRA_5 RR D  RR D  DJNZ GRA_LOOP  LD HL,PAD+8  BIT 5,(IX+0)  RET Z  CALL D_2  CALL D_2  CALL D_3  LD HL,PAD+8  RET *D_3 INC HL 4D_2 INC HL > INC HL H LD (HL),0 R RET \DOUBLE CALL MATX2 f LD B,4 p LD DE,PAD z BIT 6,(IX+0)  JR Z,DOUB_2  INC HL  INC HL  INC HL  INC HL DOUB_2 LD A,(HL)  LD (DE),A  INC DE  LD (DE),A  INC DE  INC HL  DJNZ DOUB_2  LD HL,PAD  RET  FLAGS DEFB 0  DEFB 0 ; COUNT $ DEFB 0 ; ATTR . DEFB 0 ; HOLD CHAR 8 DEFB 0 ; MISS B DEFB 0 ; LAST CHAR L DEFB 0 ; CHRS PRINTED V DEFB 24 ; LINES PRINTED ` PAD DEFS 16 j ATTR_A DEFW 0 t START DEFW #FC00 SAVE [[![ !8w#> w#p["["[p["[>2[*["[*["[*[| T]."[S[*["[![l[*[$"[*[|%"[Ä !D̈́[O)))) 0:?@?c