User`s manual
8-12
7D03 CB15 00250 RL L ;SHIFT L
7D05 CB14 00260 RL H ;SHIFT H - ANSWER IN HL
7D07 C39A0A 00270 JP PUTANS ;RETURN TO BASIC W/ANSWER
00280 ;
7D00 00290 END SHIFT
The following program includes the decimal code for the SHIFT routine. The
code is POKEd into RAM and then accessed as a USR routine. RUN the
program; to stop, enter a value of zero.
100 ' PROGRAM: SHIFT
110 ' MACHINE LANGUAGE USER FUNCTION TO LEFT SHIFT
120 '
130 ' ******* MACHINE CODE AT 71300 HEX *******
140 '
150 POKE 16526,0: POKE 16527,125
160 '
170 ' ******* POKE USER PROGRAM INTO MEMORY *******
180 '
190 FOR X=32000 TO 32009 '71300 HEX EQUALS 32000 DECIMAL
200 READ A
210 POKE X,A
220 NEXT X
230 '
240 ' ******* GET VALUE FROM USER *******
250 '
260 CLS: PRINT TAB(15);"USR LEFT-SHIFT FUNCTION"
270 PRINT: INPUT"ENTER INTEGER VALUE";V
280 IF V=0 THEN END
290 PRINT: "LEFT SHIFTED VALUE =";TAB(32);USR(V)
300 GOTO 270
310 '
320 ' ******* DATA IS DECIMAL CODE FOR HEX PROGRAM *******
330 '
340 DATA 205,127,10,203,21,203,20,195,154,10
USR routines are automatically allocated up to 8 stack levels or 16 bytes (a
high and low memory byte for each stack level). If you need more stack space,
you can save the BASIC stack pointer and set up your own stack. However,
this gets complicated; be sure you know what you're doing. See Chapter 2,
SYSTEM
, and this chapter,
PEEK, POKE.










