Значок ресурса

Print42

Нет прав на скачивание
Год: 2023
Издатели: uglifruit,Uglifruit
Языки: 🇬🇧 Английский
Формат: 📼 TAP лента
Требования: 🖥️ ZX Spectrum 48K

Ссылки:
Страница на ZXArt
Страница на Spectrum Computing

Скриншоты:
Print42-RUN-1.png


42 Column Print Routine (BASIC extension)

-----------------------------------------

By Andy Jenkinson



A well featured PRINT addition using stream 7, allowing a 42 column font to be used within BASIC.





Instructions

------------





There are two TAP files that include everything needed, an insturction and a demonstration.





42.tap - a BASIC program showing how to use the PRINT #7 syntax, and the features in action. This .tap file has the files on it.

SENSE.tap - a demonstration of the 42 column routine, with the data (text) stored more efficiently in memory, rather than within the BASIC program.







42.tap

------



You are free to use this routine within your own BASIC program





As can be seen in the BASIC listing for the demo program (42.tap) it is relatively easy to use this within your own BASIC program.



SAVE "c" CODE 64768,768 - saves the machine code routine needed to initialise the PRINT #7

SAVE "f" CODE 64000,768 - saves a tidy replacement font that works well at 42 columns



These files are also found in the 42.tap file if you wish to move them directly to your own tape image.





In your own program you would load these, and initialise the routine:



Eg.



10 CLEAR 63999

20 LOAD "c" CODE 64768

30 LOAD "f" CODE 64900

40 RANDOMIZE USR 64900

50 REM Now PRINT #7 will print using the 42 column routine





The 42.tap program explains how the PRINT #7 routine can be used, with demonstrations.







SENSE.tap

---------



"A Sense Of Balance", a short story presented using the 42 column routine, but via machine code (setting up which text would be printed using basic POKES). See listing.



A Sense Of Balance is (c) 2014, Andy Jenkinson, and was first published in the Eating My Words anthology of short fiction https://www.amazon.co.uk/Eating-My-Words-Flash-Fiction-Anthology/dp/1500110876









Using PRINT #7 Reference

------------------------

[See 42.tap demo for better illustrations of these]



PRINT #7; AT 17,35;"Hello" Prints AT ROW (0-23), COLUMN (0-41) Unlike AT you can print in the lowest two rows of the screen

PRINT #7; OVER 1;"-------" OVER 1 turns ON over printing, OVER 0 must be issued to turn it off again Unlike normal OVER this sets the OVER flag permanently, rather than just for the statement

PRINT #7; INVERSE 1;"-------" INVERSE 1 turns ON inverse printing, INVERSE 0 must be issued to turn it off again Unlike normal INVERSE this sets the INVERSE flag permanently, rather than just for the statement



Colour is unlike INK and PAPER in normal use



PRINT #7;INK n;"Hello" Sets the colour printing attribute to 'n' (where n=0-255). But see also PAPER

PRINT #7;PAPER m;"Hello" Sets the attribute MASK that is used when printing. It masks out which attributes are to be left alone using the following formula INK 7, PAPER 56, BRIGHT 64, FLASH 128

PRINT #7;PAPER 56;"Hello" will NOT change the paper colour when printing.

PRINT #7;PAPER 0;"Hello" will change ALL attributes (ink, paper, bright, flash) as set by a previous PRINT #7;INK n statement

PRINT #7;PAPER 255;"Hello" would leave all attributes alone



BRIGHT and FLASH are used entirely differently to normal, to set left and right limits to printing.



PRINT #7;BRIGHT 3;FLASH 21 Sets the left hand limit to be column 3, the right hand limit as column 21. This is useful when printing text in boxes. When a carriage return (CHR$ 13) is printed the position moves to the next row, ant he column defined by the BRIGHT command



Changing the behaviour of the PRINT #7 routine



POKE 64886,61 - use system font

POKE 64886,250 - use custom font stored at 64840

POKE 64885,m:POKE 64886,n - use custom font stored at [n*256+m]



RANDOMIZE USR 64840 - copy system colour to attribute settings for PRINT #7 (remember you'll also need PRINT #7;PAPER 0)

RANDOMIZE USR 64849 - copy attribute settings for PRINT #7 to system colour



Utility Machine Code Routines



RANDOMIZE USR 64801 - resets the print position to 0,0. Sets OVER and INVERSE off. Sets the print limits to the edges of the screen, and sets the attribute mask to 255 (leaves the attributes alone when printing).



RANDOMIZE USR 64786 - as ablove, and floods screen with current attribute (does NOT clear screen)



RANDOMIZE USR 64773 - as above, and DOES clear the screen



RANDOMIZE USR 64768 - as above and sets the attribute to 56 (white paper, black ink, no flash/bright). This can be changed using POKE 64769,n



RANDOMIZE USR 64819 - prints the string stored at the address (low byte, high byte) stored in 64823/64824. A Sense Of Balance uses this technique. The length of the string to be printed is stored in 64823/64824













Source Code

-----------



.asm is included.

Apologies for the sloppiness
Автор
Verter_bot
Загрузки
0
Просмотры
1
Расширение
zip
Размер
6.8 КБ
Хэш
d32ccbdc7a13f37eac95bb1ec8eaceb2
Первый выпуск
Последнее обновление

Оценки

0.00 звезд(ы) 0 оценок
Назад
Вверх