home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 17 / Flop_Magazin_17_1992_United_Electronic_Crazies_cs_Side_A.atr / hidmem2.lst < prev    next >
File List  |  2023-02-26  |  4KB  |  1 lines

  1. 10 REM *****************************¢20 REM *     BANK SWITCHING OF     *¢30 REM *   ATARI XL HIDDEN MEMORY  *¢40 REM *      by Kevin T. Pate     *¢50 REM *                           *¢60 REM *       COPYRIGHT 1989      *¢70 REM *     BY ANALOG COMPUTING   *¢80 REM *****************************¢90 REM ¢120 REM USER SELECTED BANK SIZE IS VARIABLE ZBSZ¢130 REM BANK SIZE IS SELECTABLE FROM 225 X 100 BYTE BANKS MAX., 2 X 10K (10240) BYTE BANKS MIN.¢140 REM BANK RAM STARTING ADDRESSES (IN HIDDEN MEMORY) ARE IN ZB$¢150 REM BANK POINTER NUMBER (1 TO ZBTOT); ZBTOT IS TOTAL NUMBER OF BANKS¢160 REM USER SELECTED TARGET RAM STARTING ADDRESS (IN REGULAR RAM AREA) IS VARIABLE ZAD¢170 GOSUB 20000:REM RAM ACCESS INITIALIZATION SUBROUTINE¢180 REM THIS EXAMPLE WILL SWITCH INTO SCREEN MEMORY 22 DIFFERENT DISPLAY BANKS¢190 ZBSZ=960:REM BANK SIZE = 960 BYTES FOR GR.0 SCREEN¢200 DLIST=PEEK(560)+256*PEEK(561):REM DISPLAY LIST ADDRESS¢210 ZAD=PEEK(DLIST+4)+256*PEEK(DLIST+5):REM SCREEN MEMORY STARTING ADDRESS¢220 GOSUB 21000:REM SETUP BANK ADDRESSES BASED ON BANK SIZE¢230 REM CREATE DISPLAYS AND STORE BANKS IN HIDDEN MEMORY¢240 POKE 752,1:REM TURN OFF CURSOR¢250 PRINT "}בפדIJקדáצבפדדמáגחצסכIJךצáIJמג            צקנפדáחמáזחגגדמáלדלנפךáאIJמיצ«««":FOR N=1 TO 1000:NEXT N¢260 FOR I=1 TO ZBTOT¢270 PRINT "}":POSITION 6,I:PRINT "THIS IS DISPLAY BANK #";I:REM CLEAR SCREEN AND PRINT MESSAGE AT VARYING ROW NUMB¢280 ZPTR=I:GOSUB ZBNKOUT:REM SET BANK POINTER AND STORE SCREEN MEMORY TO BANK¢290 NEXT I¢300 REM NOW SWITCH IN BANKS ONE BY ONE, PAUSING BETWEEN EACH DISPLAY¢310 PRINT "}מנתáפדבIJככáצבפדדמáגחצסכIJךצ            הפנלáזחגגדמáלדלנפךáאIJמיצ«««":FOR N=1 TO 1000:NEXT N¢320 FOR I=1 TO ZBTOT¢330 ZPTR=I:GOSUB ZBNKIN:REM SET BANK POINTER AND READ IN BANK TO SCREEN MEMORY¢340 FOR N=1 TO 100:NEXT N:REM PAUSE¢350 NEXT I¢360 GOTO 320:REM REPEAT DISPLAY LOOP¢370 REM ¢20000 REM RAM ACCESS INITIALIZATION SUBROUTINE¢20010 REM ML SUBROUTINE IS RELOCATABLE¢20020 DIM MOV$(50):REM STORAGE AREA FOR ML ROUTINE¢20030 DIM ZB$(450):REM HIDDEN MEMORY STARTING ADDRESSES, STORED AS HIGH BYTE/LOW BYTE¢20040 ZBNKIN=22000:REM BANK SWITCH IN BASIC SUBROUTINE¢20050 ZBNKOUT=23000:REM BANK SWITCH OUT BASIC SUBROUTINE¢20060 REM ML LOADER¢20070 RESTORE 20130¢20080 FOR ZZ=0 TO 48¢20090 READ ZZZ:POKE ADR(MOV$)+ZZ,ZZZ¢20100 NEXT ZZ¢20110 RETURN ¢20120 REM ML DATA¢20130 DATA 104,162,2,142,1,211¢20140 DATA 104,133,215,104,133,214,104¢20150 DATA 133,217,104,133,216,104,133,218¢20160 DATA 104,170,160,0,177,214,145,216¢20170 DATA 200,208,4,230,215,230,217,202¢20180 DATA 208,242,198,218,16,238¢20190 DATA 162,253,142,1,211,96¢20200 REM ¢21000 REM SETUP BANK ADDRESSES BASED ON BANK SIZE¢21010 ZLTOT=INT(12288/ZBSZ):REM TOTAL NUMBER OF BANKS IN LOWER PART OF HIDDEN MEMORY¢21020 ZUTOT=INT(10240/ZBSZ):REM TOTAL NUMBER OF BANKS IN UPPER PART OF HIDDEN MEMORY¢21030 ZBTOT=ZLTOT+ZUTOT:REM TOTAL NUMBER OF BANKS¢21040 FOR ZZ=0 TO ZLTOT-1¢21050 ZA=40960+INT(ZZ*ZBSZ+0.5):REM BANK STARTING ADDRESS¢21060 ZHA=INT(ZA/256):REM HIGH BYTE¢21070 ZLA=ZA-256*ZHA:REM LOW BYTE¢21080 POKE ADR(ZB$)+2*ZZ,ZHA:REM STORE HIGH BYTE¢21090 POKE ADR(ZB$)+2*ZZ+1,ZLA:REM STORE LOW BYTE¢21100 NEXT ZZ¢21110 FOR ZZ=0 TO ZUTOT-1¢21120 ZA=55296+INT(ZZ*ZBSZ+0.5):REM BANK STARTING ADDRESS¢21130 ZHA=INT(ZA/256):REM HIGH BYTE¢21140 ZLA=ZA-256*ZHA:REM LOW BYTE¢21150 POKE ADR(ZB$)+2*ZLTOT+2*ZZ,ZHA:REM STORE HIGH BYTE¢21160 POKE ADR(ZB$)+2*ZLTOT+2*ZZ+1,ZLA:REM STORE LOW BYTE¢21170 NEXT ZZ¢21180 RETURN ¢21190 REM ¢22000 REM BANK SWITCH IN SUBROUTINE¢22010 POKE 559,0:REM TURN OFF DISPLAY¢22020 ZB=PEEK(ADR(ZB$)+2*ZPTR-2)*256+PEEK(ADR(ZB$)+2*ZPTR-1):REM BANK STARTING ADDRESS¢22030 ZINT=PEEK(16):POKE 16,0:POKE 53774,0:POKE 54286,0:REM DISABLE INTERRUPTS¢22040 ZZ=USR(ADR(MOV$),ZB,ZAD,ZBSZ):REM SWITCH BANK RAM INTO TARGET AREA IN REGULAR RAM¢22050 POKE 16,ZINT:POKE 53774,ZINT:POKE 54286,255:REM ENABLE INTERRUPTS¢22060 POKE 559,46:REM TURN ON DISPLAY¢22070 RETURN ¢22080 REM ¢23000 REM BANK SWITCH OUT SUBROUTINE¢23010 POKE 559,0:REM TURN OFF DISPLAY¢23020 ZB=PEEK(ADR(ZB$)+2*ZPTR-2)*256+PEEK(ADR(ZB$)+2*ZPTR-1):REM BANK STARTING ADDRESS¢23030 ZINT=PEEK(16):POKE 16,0:POKE 53774,0:POKE 54286,0:REM DISABLE INTERRUPTS¢23040 ZZ=USR(ADR(MOV$),ZAD,ZB,ZBSZ):REM STORE TARGET RAM IN REGULAR AREA TO BANK RAM¢23050 POKE 16,ZINT:POKE 53774,ZINT:POKE 54286,255:REM ENABLE INTERRUPTS¢23060 POKE 559,46:REM TURN ON DISPLAY¢23070 RETURN ¢