; Teletext "!startup" script.
;
; Version 0.28  2004/04/30
;
;
; uncomment the line below if the frames are already cached, but the file write
; was aborted for whatever reason...
; MAKE SURE YOU HOLD ALT WHILE RE-RUNNING SCRIPT ELSE THE CACHE'LL BE CLEARED!
;goto("outputstart")

; We check channel IDs and ask the user to change the
; channel as we ONLY have teletext reception on one
; UHF channel - as it's coming in through a satellite
; receiver...

; select satellite decoder
channel(5)
poll_now()


; It might help to know my ANALOGUE satellite receiver allocations
; so the "Channel #" things make sense...
;   Ch1  CNN International
;   Ch2  CNBC
;   Ch3  EuroSport DE (English audio)
;   Ch4  -
;   Ch5  MTV DE
;   Ch6  MTV-2:POP DE
;   Ch7  Viva
;   Ch8  VivaPlus
;   etc


; MTV highlights (only on a Monday; unless CTRL held)
set Z to 0 ; no highlights
set M to status(day)
if (M ! 1) go("nomtv")
message("Please set satellite receiver to MTV (channel 5)")
; there's no channel ID for MTV, so we'll just have to ask and hope!
.domtvanyway
getframes(303)
set Z to 1 ; highlights
.nomtv

; We use the CTRL key to override the above not-on-Monday and do it anyway.
; ** WE CANNOT USE 'ALT' AS THIS IS USED TO SUPRESS SCRIPT CACHE CLEARING **
set Y to status(ctrlkey)
if (Y = 1) go("domtvanyway") ; ** this could probably be rewritten
                             ;    to make a lot more sense!

; now we want to receive CNBC
.isitcnbc
  channelid(A)
  if (A ! &714E) message("Please set satellite receiver to CNBC (channel 2)")
  if (A ! &714E) go("isitcnbc")

; Jay Leno's guest list, and Conan's guest list
getframes(340) ; is NO LONGER 182 & 183...
getframes(341)

; now we want to receive CNN
.isitcnn
  channelid(A)
  if (A ! &804F) message("Please set satellite receiver to CNN (channel 1)")
  if (A ! &804F) go("isitcnn")

; News
set A to 101
.getnews
  getframe(A)
  A++
  if (A [ 111) go("getnews")

; Entertainment news (weekends only; unless CTRL was held from before)
getframe(130)
if (Z = 1) go("doent")
set M to status(day)
if (M < 6) go("skipent")
; this bit is ONLY done on weekends (unless CTRLed)...
.doent
set A to 130
.getent
  getframe(A)
  A++
  if (A [ 139) go("getent")
getframes(140)
.skipent

; Business headlines
getframe(701)

; Quote for the day
getframe(178)

; Current weather (Nantes)
getframes(463)

; 3day forecast (Paris)
getframes(470)

; now we have all the frames, let's generate ourselves a document
.outputstart
poll_nomessages()
poll_disable()

filewrite("<Teletext$Temp>.Report")
filewriteovnhead()
filewritestring("{align 1}") ; make it all centred

; NEWS
filewritestring("{newpara}{textsize 16000}{bold 1}{underline 1}")
filewritebyte(34)
filewritestring("Headlines")
filewritebyte(34)
filewritestring("{bold 0}{underline 0}{textsize 12000}")
filewritebyte(34)
filewritestring(" (from CNN)")
filewritebyte(34)
filewritebyte(10)
filewritestring("{textsize}{bold}{underline}{newpara}")
set A to 101
.writenews
  appendframe(A, 3)
  A++
  if (A [ 111) go("writenews")

; BUSINESS HEADLINES
filewritestring("{newpara}{textsize 16000}{bold 1}{underline 1}")
filewritebyte(34)
filewritestring("Business headlines")
filewritebyte(34)
filewritestring("{bold 0}{underline 0}{textsize 12000}")
filewritebyte(34)
filewritestring(" (from CNN)")
filewritebyte(34)
filewritebyte(10)
filewritestring("{textsize}{bold}{underline}{newpara}")
appendframe(701, 3)

; ENTERTAINMENT HEADLINES
filewritestring("{newpara}{textsize 16000}{bold 1}{underline 1}")
filewritebyte(34)
filewritestring("Entertainment headlines")
filewritebyte(34)
filewritestring("{bold 0}{underline 0}{textsize 12000}")
filewritebyte(34)
filewritestring(" (from CNN)")
filewritebyte(34)
filewritebyte(10)
filewritestring("{textsize}{bold}{underline}{newpara}")
appendframe(130, 3)

; M should still be the day number... (weekends only, unless CTRLed)
if (Z = 1) go("dowriteent")
if (M < 6) go("skipwriteent")
.dowriteent
set A to 131
.writeent
  appendframe(A, 3)
  A++
  if (A [ 139) go("writeent")
  appendgivenframe(140, 1, 3)
  appendgivenframe(140, 2, 3)
.skipwriteent

; QUOTE
filewritestring("{newpara}{textsize 16000}{bold 1}{underline 1}")
filewritebyte(34)
filewritestring("Quote for the day")
filewritebyte(34)
filewritestring("{bold 0}{underline 0}{textsize 12000}")
filewritebyte(34)
filewritestring(" (from CNN)")
filewritebyte(34)
filewritebyte(10)
filewritestring("{textsize}{bold}{underline}{newpara}")
appendframe(178, 3)

; WEATHER IN NANTES
filewritestring("{newpara}{textsize 16000}{bold 1}{underline 1}")
filewritebyte(34)
filewritestring("The weather in Nantes")
filewritebyte(34)
filewritestring("{bold 0}{underline 0}{textsize 12000}")
filewritebyte(34)
filewritestring(" (from CNN)")
filewritebyte(34)
filewritebyte(10)
filewritestring("{textsize}{bold}{underline}{newpara}")
appendgivenframe(463, 2, 3)

; PARIS, THREE DAY FORECAST
filewritestring("{newpara}{textsize 16000}{bold 1}{underline 1}")
filewritebyte(34)
filewritestring("Paris, three day forecast")
filewritebyte(34)
filewritestring("{bold 0}{underline 0}{textsize 12000}")
filewritebyte(34)
filewritestring(" (from CNN)")
filewritebyte(34)
filewritebyte(10)
filewritestring("{textsize}{bold}{underline}{newpara}")
appendgivenframe(470, 2, 3)

; JAY LENO (page 340, NOT 182)
filewritestring("{newpara}{textsize 16000}{bold 1}{underline 1}")
filewritebyte(34)
filewritestring("Jay Leno's guest list")
filewritebyte(34)
filewritestring("{bold 0}{underline 0}{textsize 12000}")
filewritebyte(34)
filewritestring(" (from CNBC)")
filewritebyte(34)
filewritebyte(10)
filewritestring("{textsize}{bold}{underline}{newpara}")
appendgivenframe(340, 2, 3)

; CONAN (page 341, NOT 183)
filewritestring("{newpara}{textsize 16000}{bold 1}{underline 1}")
filewritebyte(34)
filewritestring("Conan O'Brien's guest list")
filewritebyte(34)
filewritestring("{bold 0}{underline 0}{textsize 12000}")
filewritebyte(34)
filewritestring(" (from CNBC)")
filewritebyte(34)
filewritebyte(10)
filewritestring("{textsize}{bold}{underline}{newpara}")
appendgivenframe(341, 2, 3)

; Highlights on MTV (Monday only)
if (Z = 1) go("writemtvanyway")
set M to status(day)
if (M ! 1) go("nowritemtv")
.writemtvanyway
filewritestring("{newpara}{textsize 16000}{bold 1}{underline 1}")
filewritebyte(34)
filewritestring("Highlights on MTV")
filewritebyte(34)
filewritestring("{bold 0}{underline 0}{textsize 12000}")
filewritebyte(34)
filewritestring(" (from MTV)")
filewritebyte(34)
filewritebyte(10)
filewritestring("{textsize}{bold}{underline}{newpara}")
appendframes(303, 3)
.nowritemtv

; tidy up
filewriteovntail()
fileclose()
filetype("<Teletext$Temp>.Report", &B25)
oscall("Filer_Run <Teletext$Temp>.Report")

; we're done
terminate()
