1000 '-------------------------------------------- 1010 '-- ROLLER.BAS - Demonstration des Aufrufs -- 1020 '-- der System-Routinen SCR ROLL DOWN und -- 1030 '-- SCR ROLL UP in einem BASIC-Programm. -- 1040 '-- Programmier-Sprache: MALLARD BASIC -- 1050 '-- Rechner: PCW 8265/8512 (JOYCE) -- 1060 '-- CP/M-Version: CP/M 3 (PLUS) Vers. 1.4 -- 1070 '-- (Systemfile J14GCPM3.EMS) -- 1080 '-- (c) 1992 Norbert Finke & CPC Int. -- 1090 '-------------------------------------------- 1100 GOSUB 1330 'Variablen-Initialisierung 1110 GOSUB 1530 'M-Code-Initialisierung 1120 PRINT cls$crlf.off$cur.off$;:WIDTH 255 1130 OPTION NOT TAB 1140 PRINT FNat$(0,30); 1150 PRINT "ENDE => bitte Taste dr}cken..."; 1160 WHILE INKEY$="" 1170 PRINT FNat$(0,14)bline$; 'untere Zeile ausgb. 1180 PRINT FNat$(0,15)tline$; 'obere Zeile ausgb. 1190 POKE uzup%,14:POKE ozup%,0 'Z.-ber. festlegen 1200 POKE uzdn%,29:POKE ozdn%,15 1210 GOSUB 1450: 'Bildschirmbereiche rollen 1220 PRINT FNat$(0,0)tline$; 'obere Zeile ausgb. 1230 PRINT FNat$(0,29)bline$;'untere Zeile ausgb. 1240 POKE uzup%,29:POKE ozup%,15'Z.-ber. festlegen 1250 POKE uzdn%,14:POKE ozdn%,0 1260 GOSUB 1450: 'Bildschirmbereiche rollen 1270 WEND 1280 PRINT cls$crlf.on$cur.on$; 1290 END 1300 '-------------------------------------------- 1310 '----- Initialisierung der Variablen ------ 1320 '-------------------------------------------- 1330 esc$=CHR$(27):cls$=esc$+"E"+esc$+"H" 1340 DEF FNat$(x,y)=esc$+"Y"+CHR$(y+32)+CHR$(x+32) 1350 crlf.off$=esc$+"w":crlf.on$=esc$+"v" 1360 cur.on$=esc$+"e":cur.off$=esc$+"f" 1370 bline$=STRING$(90,"^"):tline$="" 1380 FOR i=1 TO 90 1390 tline$=tline$+esc$+CHR$(9) 1400 NEXT 1410 RETURN 1420 '-------------------------------------------- 1430 '------- Bildschirmbereiche rollen -------- 1440 '-------------------------------------------- 1450 FOR i= 1 TO 14 1460 CALL roll.up% 1470 CALL roll.down% 1480 NEXT 1490 RETURN 1500 '-------------------------------------------- 1510 '---- Maschinenprogramm initialisieren ---- 1520 '-------------------------------------------- 1530 RESTORE 1660 'Start der Maschinen-Data 1540 MEMORY HIMEM-18 'Platz f}r M-Code schaffen 1550 roll.up%=UNT(HIMEM+1) 'Startadresse Roll-Up 1560 uzup%=UNT(HIMEM+2):ozup%=UNT(HIMEM+3) 1570 roll.down%=UNT(HIMEM+10) 'Startadr. Roll-Down 1580 uzdn%=UNT(HIMEM+11):ozdn%=UNT(HIMEM+12) 1590 FOR i=HIMEM+1 TO HIMEM+18 'M-Code speichern 1600 READ a$:POKE i,VAL("&H"+a$) 1610 NEXT 1620 RETURN 'und zur}ck 1630 '-------------------------------------------- 1640 '-------------- Maschinen-Code -------------- 1650 '-------------------------------------------- 1660 DATA 11,00,00: ' LD DE,0000 1670 DATA CD,5A,FC: ' CALL 0FC5AH 1680 DATA 20,16: ' DEFW 01620H 1690 DATA C9: ' RET 1700 DATA 11,00,00: ' LD DE,0000 1710 DATA CD,5A,FC: ' CALL 0FC5AH 1720 DATA 53,16: ' DEFW 01653H 1730 DATA C9: ' RET