Horace Goes Skiing

Horace must first cross a busy multi-lane road of cars, trucks and bicycles to reach the SKIS hut, where he rents skis with his cash. He then crosses back and skis down a slalom course, passing between the flags and avoiding trees. A demo mode plays until a key is pressed.

The title screen scrolls “COPYRIGHT © 1982 BEAM SOFTWARE — WRITTEN BY WILLIAM TANG”. The game was first published by Melbourne House, and Timex sold this TS2068 version (catalog 06-4015) in 1984, with Psion named on the product listing. Its companions, Hungry Horace and Horace and the Spiders, are also archived here.

Program Analysis

Loader

The BASIC loader does CLEAR 30000, sets paper, ink and border to yellow, loads a title screen and a 9,216-byte code block at 32768, and starts it with PRINT USR 32768. Constants are written as PI-PI and PI/PI, and POKE 23659,0 (DF SZ) comes before each step.

Notable Techniques

  • The game is machine code. The BASIC uses LET z=PI-PI and LET o=PI/PI to save memory on numeric constants.
  • Setting DF SZ (23659) to 0 before each PRINT AT 22,0 lets the loader use the bottom lines of the screen.

This copy came from a Larken disk and was converted for tape: the PRINT USR 100 disk prefixes and the LOGICALL line were removed. It was tested on a stock TS2068 in ZEsarUX: title screen, demo mode and play, with Horace moving and scoring.

Related Products

Delightful animated graphics program gives hours of fun. But you also need skill to help Horace slalom down the slopes, between the flags — without hitting the trees.

Related Articles

A common complaint in the microcomputer field is that those who make the hardware don’t know how to write the software.
There are three programs in the Horace saga: Horace and the Spiders, Horace Goes Skiing and Hungry Horace.

Image Gallery

Source Code

   10 CLEAR 30000: LET z=PI-PI: LET y=6: LET o=PI/PI: LET l=22: LET m=23659
   20 BORDER y: PAPER y: INK y: CLS 
   30 POKE m,z: PRINT AT l,z;;: PRINT USR 100: LOAD "skiing.C$"SCREEN$ 
   40 POKE m,z: PRINT AT l,z;;: PRINT USR 100: LOAD "skiing.C1"CODE 
   50 POKE m,z: PRINT AT l,z;;: PRINT USR 32768
 9992 PRINT USR 100: SAVE "SKIING.B1" LINE 1
 9998 PRINT USR 100: LOAD "L.B1"

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.