_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

OPTION.H

FILE INFORMATION

FILENAME(S): OPTION.H

FILE TYPE(S): USR

FILE SIZE: 3.6K

FIRST SEEN: 2025-12-01 01:08:53

APPEARS ON: 1 disk(s)

FILE HASH

467438d58a6ea52853683e5a05e85947a6f579ba26a15d8737b2bef063988a3e

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
C BACKUP OPTION.H USR hedning, loot 20 10 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 85 81 1C 2F 2A 20 CF 50  54 49 4F 4E 41 4C 20 4D  |.../* .PTIONAL M|
00000010: 41 43 52 4F 20 44 45 46  49 4E 49 54 49 4F 4E 53  |ACRO DEFINITIONS|
00000020: 20 41 4E 44 20 46 55 4E  43 54 49 4F 4E 53 2E 20  | AND FUNCTIONS. |
00000030: 2A 2F 0D 1C 0D 1C 0D 1C  0D 1F 2F 2A 20 CD 41 43  |*/......../* .AC|
00000040: 52 4F 20 44 45 46 49 4E  49 54 49 4F 4E 53 20 2A  |RO DEFINITIONS *|
00000050: 2F 0D 1F 0D 1F 0D 1F 23  44 45 46 49 4E 45 20 50  |/......#DEFINE P|
00000060: 4F 4B 45 28 41 44 44 52  2C 56 41 4C 55 45 29 20  |OKE(ADDR,VALUE) |
00000070: 20 2A 41 44 44 52 3D 56  41 4C 55 45 0D 1F 23 44  | *ADDR=VALUE..#D|
00000080: 45 46 49 4E 45 20 50 45  45 4B 28 41 44 44 52 29  |EFINE PEEK(ADDR)|
00000090: 20 20 20 20 20 20 20 20  2A 41 44 44 52 0D 1F 0D  |        *ADDR...|
000000A0: 1F 23 44 45 46 49 4E 45  20 43 4C 52 53 43 52 20  |.#DEFINE CLRSCR |
000000B0: 20 20 20 20 20 20 20 20  20 20 20 50 55 54 43 48  |           PUTCH|
000000C0: 41 52 28 C3 CC D2 29 0D  1F 0D 1F 23 44 45 46 49  |AR(...)....#DEFI|
000000D0: 4E 45 20 D7 C9 CE C4 CF  D7 20 20 20 20 20 20 20  |NE ......       |
000000E0: 20 20 20 20 20 57 49 4E  44 4F 57 5B 4E 45 57 57  |     WINDOW[NEWW|
000000F0: 49 4E 5D 0D 1F 23 44 45  46 49 4E 45 20 D3 C3 D2  |IN]..#DEFINE ...|
00000100: C5 C5 CE 20 20 20 20 20  20 20 20 20 20 20 20 30  |...            0|
00000110: 58 45 30 30 30 0D 1F 0D  1F 0D 1F 0D 9F 2F 2A 20  |XE000......../* |
00000120: D7 49 4E 44 4F 57 20 53  54 52 55 43 54 55 52 45  |.INDOW STRUCTURE|
00000130: 20 2A 2F 0D 9F 0D 9F 53  54 41 54 49 43 20 53 54  | */....STATIC ST|
00000140: 52 55 43 54 20 57 49 4E  53 54 52 55 43 0D 9F 20  |RUCT WINSTRUC.. |
00000150: 20 20 20 20 20 20 20 20  20 20 20 DB 0D 9F 0D 9F  |           .....|
00000160: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 49 4E  |              IN|
00000170: 54 20 20 52 4F 57 31 3B  20 20 20 20 20 20 2F 2A  |T  ROW1;      /*|
00000180: 20 55 50 50 45 52 20 4C  45 46 54 20 43 4F 52 4E  | UPPER LEFT CORN|
00000190: 45 52 20 2A 2F 0D 9F 20  20 20 20 20 20 20 20 20  |ER */..         |
000001A0: 20 20 20 20 20 49 4E 54  20 20 43 4F 4C 31 3B 0D  |     INT  COL1;.|
000001B0: 9F 20 20 20 20 20 20 20  20 20 20 20 20 20 20 49  |.              I|
000001C0: 4E 54 20 20 52 4F 57 32  3B 20 20 20 20 20 20 2F  |NT  ROW2;      /|
000001D0: 2A 20 44 4F 57 4E 20 52  49 47 48 54 20 43 4F 52  |* DOWN RIGHT COR|
000001E0: 4E 45 52 20 2A 2F 0D 9F  20 20 20 20 20 20 20 20  |NER */..        |
000001F0: 20 20 20 20 20 20 49 4E  54 20 20 43 4F 4C 32 3B  |      INT  COL2;|
00000200: 0D 9F 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
00000210: 49 4E 54 20 20 42 59 54  45 53 3B 20 20 20 20 20  |INT  BYTES;     |
00000220: 2F 2A 20 4E 55 4D 42 45  52 20 4F 46 20 42 59 54  |/* NUMBER OF BYT|
00000230: 45 53 20 55 53 45 44 20  42 59 20 57 49 4E 44 4F  |ES USED BY WINDO|
00000240: 57 20 2A 2F 0D 9F 20 20  20 20 20 20 20 20 20 20  |W */..          |
00000250: 20 20 20 20 43 48 41 52  20 2A 53 54 4F 52 45 50  |    CHAR *STOREP|
00000260: 54 52 3B 20 2F 2A 20 50  4F 49 4E 54 45 52 20 54  |TR; /* POINTER T|
00000270: 4F 20 53 54 4F 52 41 47  45 20 4F 46 20 48 49 44  |O STORAGE OF HID|
00000280: 44 45 4E 20 20 53 55 52  46 41 43 45 20 2A 2F 0D  |DEN  SURFACE */.|
00000290: 9F 0D 9F 20 20 20 20 20  20 20 20 20 20 20 20 DD  |...            .|
000002A0: 20 57 49 4E 44 4F 57 5B  38 5D 3B 0D 9F 0D 9F 0D  | WINDOW[8];.....|
000002B0: 9F 53 54 41 54 49 43 20  49 4E 54 20 20 4E 45 57  |.STATIC INT  NEW|
000002C0: 57 49 4E 20 20 20 20 20  3D 20 2D 31 3B 0D 9F 53  |WIN     = -1;..S|
000002D0: 54 41 54 49 43 20 43 48  41 52 20 43 4C 52 53 54  |TATIC CHAR CLRST|
000002E0: 52 5B 34 31 5D 20 3D 20  DB 22 20 20 20 20 20 20  |R[41] = ."      |
000002F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000300: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000310: 20 20 22 DD 3B 0D 9F 0D  9F 0D 1C 2F 2A 20 46 55  |  ".;....../* FU|
00000320: 4E 43 54 49 4F 4E 20 44  45 43 4C 41 52 41 54 49  |NCTION DECLARATI|
00000330: 4F 4E 53 20 2A 2F 0D 1C  0D 1C 0D 96 56 4F 49 44  |ONS */......VOID|
00000340: 20 43 45 4E 54 52 45 28  53 54 52 49 4E 47 29 0D  | CENTRE(STRING).|
00000350: 1C 0D 1C 43 48 41 52 20  2A 53 54 52 49 4E 47 3B  |...CHAR *STRING;|
00000360: 0D 1C 0D 1C DB 0D 1C 0D  1C 49 4E 54 20 20 42 59  |.........INT  BY|
00000370: 54 45 53 3B 0D 1C 49 4E  54 20 20 2A 4C 49 4E 45  |TES;..INT  *LINE|
00000380: 20 3D 20 32 31 34 3B 0D  1C 0D 1C 20 20 20 20 20  | = 214;....     |
00000390: 42 59 54 45 53 20 3D 20  28 34 30 20 2D 20 53 54  |BYTES = (40 - ST|
000003A0: 52 4C 45 4E 28 53 54 52  49 4E 47 29 29 20 2F 20  |RLEN(STRING)) / |
000003B0: 32 3B 0D 1C 0D 1C 20 20  20 20 20 43 55 52 53 4F  |2;....     CURSO|
000003C0: 52 28 2A 4C 49 4E 45 2C  42 59 54 45 53 29 3B 0D  |R(*LINE,BYTES);.|
000003D0: 1C 0D 1C 20 20 20 20 20  50 55 54 53 28 53 54 52  |...     PUTS(STR|
000003E0: 49 4E 47 2C D3 D4 C4 C9  CF 29 3B 0D 1C 0D 1C DD  |ING,.....);.....|
000003F0: 0D 1C 0D 1C 0D 96 56 4F  49 44 20 43 4C 45 41 52  |......VOID CLEAR|
00000400: 57 49 4E 28 29 0D 1C 0D  1C DB 0D 1C 0D 1C 49 4E  |WIN().........IN|
00000410: 54 20 20 4C 4F 4F 50 31  2C 52 4F 57 41 44 44 52  |T  LOOP1,ROWADDR|
00000420: 2C 42 59 54 45 49 4E 52  4F 57 3B 0D 1C 0D 1C 0D  |,BYTEINROW;.....|
00000430: 1C 20 20 20 20 20 52 4F  57 41 44 44 52 20 20 20  |.     ROWADDR   |
00000440: 3D 20 D3 C3 D2 C5 C5 CE  2B D7 C9 CE C4 CF D7 2E  |= ......+.......|
00000450: 52 4F 57 31 2A 34 30 2B  34 30 2B D7 C9 CE C4 CF  |ROW1*40+40+.....|
00000460: D7 2E 43 4F 4C 31 2B 31  3B 0D 1C 20 20 20 20 20  |..COL1+1;..     |
00000470: 42 59 54 45 49 4E 52 4F  57 20 3D 20 D7 C9 CE C4  |BYTEINROW = ....|
00000480: CF D7 2E 43 4F 4C 32 2D  D7 C9 CE C4 CF D7 2E 43  |...COL2-.......C|
00000490: 4F 4C 31 2D 31 3B 0D 1C  0D 1C 20 20 20 20 20 46  |OL1-1;....     F|
000004A0: 4F 52 20 28 4C 4F 4F 50  31 3D D7 C9 CE C4 CF D7  |OR (LOOP1=......|
000004B0: 2E 52 4F 57 31 2B 31 3B  4C 4F 4F 50 31 3C D7 C9  |.ROW1+1;LOOP1<..|
000004C0: CE C4 CF D7 2E 52 4F 57  32 3B 4C 4F 4F 50 31 2B  |.....ROW2;LOOP1+|
000004D0: 2B 2C 52 4F 57 41 44 44  52 2B 3D 34 30 29 0D 1C  |+,ROWADDR+=40)..|
000004E0: 20 20 20 20 20 20 20 20  20 4D 4F 56 45 20 28 52  |         MOVE (R|
000004F0: 4F 57 41 44 44 52 2C 42  59 54 45 49 4E 52 4F 57  |OWADDR,BYTEINROW|
00000500: 2C 26 43 4C 52 53 54 52  5B 30 5D 29 3B 0D 1C 0D  |,&CLRSTR[0]);...|
00000510: 1C 0D 1C DD 0D 1C 0D 1C  0D 1C 0D 1C 0D 96 42 4F  |..............BO|
00000520: 4F 4C 45 41 4E 20 4F 50  45 4E 57 49 4E 28 55 50  |OLEAN OPENWIN(UP|
00000530: 45 52 52 4F 57 2C 4C 45  46 54 43 4F 4C 2C 44 4F  |ERROW,LEFTCOL,DO|
00000540: 57 4E 52 4F 57 2C 52 49  47 48 54 43 4F 4C 29 0D  |WNROW,RIGHTCOL).|
00000550: 1C 0D 1C 49 4E 54 20 20  20 20 20 55 50 45 52 52  |...INT     UPERR|
00000560: 4F 57 2C 4C 45 46 54 43  4F 4C 2C 44 4F 57 4E 52  |OW,LEFTCOL,DOWNR|
00000570: 4F 57 2C 52 49 47 48 54  43 4F 4C 3B 0D 1C 0D 1C  |OW,RIGHTCOL;....|
00000580: DB 0D 1C 0D 1C 49 4E 54  20 20 20 20 20 49 2C 4C  |.....INT     I,L|
00000590: 4F 4F 50 31 2C 4C 4F 4F  50 32 2C 42 59 54 49 4E  |OOP1,LOOP2,BYTIN|
000005A0: 52 4F 57 3B 0D 1C 49 4E  54 20 20 20 20 20 53 4F  |ROW;..INT     SO|
000005B0: 55 52 43 45 41 44 52 2C  53 54 4F 52 45 41 44 52  |URCEADR,STOREADR|
000005C0: 3B 0D 1C 43 48 41 52 20  20 20 20 2A 54 41 52 47  |;..CHAR    *TARG|
000005D0: 45 54 41 44 52 2C 2A 43  4F 4C 4F 52 20 3D 20 36  |ETADR,*COLOR = 6|
000005E0: 34 36 3B 0D 1C 43 48 41  52 20 20 20 20 2A 42 4F  |46;..CHAR    *BO|
000005F0: 52 44 45 52 20 3D 20 35  33 32 38 30 3B 0D 1C 42  |RDER = 53280;..B|
00000600: 4F 4F 4C 45 41 4E 20 52  45 53 55 4C 54 20 20 3D  |OOLEAN RESULT  =|
00000610: 20 C6 C1 CC D3 C5 3B 0D  1C 0D 1C 0D 1C 20 20 49  | .....;......  I|
00000620: 46 20 28 20 4E 45 57 57  49 4E 20 3C 20 37 20 29  |F ( NEWWIN < 7 )|
00000630: 0D 1C 20 20 20 DB 0D 1C  0D 96 20 20 20 20 20 2F  |..   .....     /|
00000640: 2A 20 49 4E 49 54 49 41  4C 49 5A 45 20 41 20 4E  |* INITIALIZE A N|
00000650: 45 57 20 57 49 4E 44 4F  57 20 2A 2F 0D 1C 0D 1C  |EW WINDOW */....|
00000660: 20 20 20 20 20 4E 45 57  57 49 4E 2B 2B 3B 0D 1C  |     NEWWIN++;..|
00000670: 0D 96 20 20 20 20 20 2F  2A 20 43 41 4C 43 55 4C  |..     /* CALCUL|
00000680: 41 54 45 20 4E 55 4D 42  45 52 20 4F 46 20 42 59  |ATE NUMBER OF BY|
00000690: 54 45 53 20 49 4E 20 54  48 45 20 57 49 4E 44 4F  |TES IN THE WINDO|
000006A0: 57 20 2A 2F 0D 1C 0D 1C  20 20 20 20 20 D7 C9 CE  |W */....     ...|
000006B0: C4 CF D7 2E 42 59 54 45  53 20 3D 20 20 28 31 2B  |....BYTES =  (1+|
000006C0: 44 4F 57 4E 52 4F 57 2D  55 50 45 52 52 4F 57 29  |DOWNROW-UPERROW)|
000006D0: 2A 28 31 2B 52 49 47 48  54 43 4F 4C 2D 4C 45 46  |*(1+RIGHTCOL-LEF|
000006E0: 54 43 4F 4C 29 3B 0D 1C  0D 96 20 20 20 20 20 2F  |TCOL);....     /|
000006F0: 2A 20 41 4C 4C 4F 43 41  54 45 20 53 54 4F 52 41  |* ALLOCATE STORA|
00000700: 47 45 20 41 52 45 41 20  46 4F 52 20 48 49 44 44  |GE AREA FOR HIDD|
00000710: 45 4E 20 53 55 52 46 41  43 45 20 2A 2F 0D 1C 0D  |EN SURFACE */...|
00000720: 1C 20 20 20 20 20 53 54  4F 52 45 41 44 52 20 3D  |.     STOREADR =|
00000730: 20 41 4C 4C 4F 43 28 D7  C9 CE C4 CF D7 2E 42 59  | ALLOC(.......BY|
00000740: 54 45 53 29 3B 0D 1C 20  20 20 20 20 D7 C9 CE C4  |TES);..     ....|
00000750: CF D7 2E 53 54 4F 52 45  50 54 52 20 3D 20 53 54  |...STOREPTR = ST|
00000760: 4F 52 45 41 44 52 3B 0D  1C 0D 96 20 20 20 20 20  |OREADR;....     |
00000770: 2F 2A 20 53 54 4F 52 45  20 43 4F 52 44 49 4E 41  |/* STORE CORDINA|
00000780: 54 45 53 20 46 4F 52 20  57 49 4E 44 4F 57 20 2A  |TES FOR WINDOW *|
00000790: 2F 0D 1C 0D 1C 20 20 20  20 20 D7 C9 CE C4 CF D7  |/....     ......|
000007A0: 2E 52 4F 57 31 20 3D 20  55 50 45 52 52 4F 57 3B  |.ROW1 = UPERROW;|
000007B0: 0D 1C 20 20 20 20 20 D7  C9 CE C4 CF D7 2E 43 4F  |..     .......CO|
000007C0: 4C 31 20 3D 20 4C 45 46  54 43 4F 4C 3B 0D 1C 20  |L1 = LEFTCOL;.. |
000007D0: 20 20 20 20 D7 C9 CE C4  CF D7 2E 52 4F 57 32 20  |    .......ROW2 |
000007E0: 3D 20 44 4F 57 4E 52 4F  57 3B 0D 1C 20 20 20 20  |= DOWNROW;..    |
000007F0: 20 D7 C9 CE C4 CF D7 2E  43 4F 4C 32 20 3D 20 52  | .......COL2 = R|
00000800: 49 47 48 54 43 4F 4C 3B  0D 1C 0D 96 20 20 20 20  |IGHTCOL;....    |
00000810: 20 2F 2A 20 53 54 4F 52  45 20 48 49 44 44 45 4E  | /* STORE HIDDEN|
00000820: 20 53 55 52 46 41 43 45  20 54 4F 20 41 4C 4C 4F  | SURFACE TO ALLO|
00000830: 43 41 54 45 44 20 42 4C  4F 43 4B 20 2A 2F 0D 1C  |CATED BLOCK */..|
00000840: 0D 1C 20 20 20 20 20 53  4F 55 52 43 45 41 44 52  |..     SOURCEADR|
00000850: 20 3D 20 D3 C3 D2 C5 C5  CE 2B 34 30 2A 55 50 45  | = ......+40*UPE|
00000860: 52 52 4F 57 2B 4C 45 46  54 43 4F 4C 3B 0D 1C 20  |RROW+LEFTCOL;.. |
00000870: 20 20 20 20 42 59 54 49  4E 52 4F 57 20 20 3D 20  |    BYTINROW  = |
00000880: 31 2B 52 49 47 48 54 43  4F 4C 2D 4C 45 46 54 43  |1+RIGHTCOL-LEFTC|
00000890: 4F 4C 3B 0D 1C 0D 1C 20  20 20 20 20 46 4F 52 28  |OL;....     FOR(|
000008A0: 4C 4F 4F 50 31 3D 55 50  45 52 52 4F 57 3B 4C 4F  |LOOP1=UPERROW;LO|
000008B0: 4F 50 31 3C 3D 44 4F 57  4E 52 4F 57 3B 4C 4F 4F  |OP1<=DOWNROW;LOO|
000008C0: 50 31 2B 2B 2C 53 4F 55  52 43 45 41 44 52 2B 3D  |P1++,SOURCEADR+=|
000008D0: 34 30 2C 53 54 4F 52 45  41 44 52 2B 3D 42 59 54  |40,STOREADR+=BYT|
000008E0: 49 4E 52 4F 57 29 0D 1C  20 20 20 20 20 20 20 20  |INROW)..        |
000008F0: 20 4D 4F 56 45 28 53 54  4F 52 45 41 44 52 2C 42  | MOVE(STOREADR,B|
00000900: 59 54 49 4E 52 4F 57 2C  53 4F 55 52 43 45 41 44  |YTINROW,SOURCEAD|
00000910: 52 2C 35 36 29 3B 0D 1C  0D 1C 0D 96 20 20 20 20  |R,56);......    |
00000920: 20 2F 2A 20 44 52 41 57  20 46 52 41 4D 45 20 52  | /* DRAW FRAME R|
00000930: 4F 55 4E 44 20 57 49 4E  44 4F 57 20 2A 2F 0D 1C  |OUND WINDOW */..|
00000940: 0D 1C 0D 1C 20 20 20 20  20 54 41 52 47 45 54 41  |....     TARGETA|
00000950: 44 52 20 3D 20 D3 C3 D2  C5 C5 CE 2B 34 30 2A 55  |DR = ......+40*U|
00000960: 50 45 52 52 4F 57 2B 4C  45 46 54 43 4F 4C 3B 0D  |PERROW+LEFTCOL;.|
00000970: 1C 0D 1C 20 20 20 20 20  2A 54 41 52 47 45 54 41  |...     *TARGETA|
00000980: 44 52 20 3D 20 31 31 32  3B 0D 1C 0D 1C 20 20 20  |DR = 112;....   |
00000990: 20 20 46 4F 52 20 28 4C  4F 4F 50 31 3D 4C 45 46  |  FOR (LOOP1=LEF|
000009A0: 54 43 4F 4C 2B 31 2C 2B  2B 54 41 52 47 45 54 41  |TCOL+1,++TARGETA|
000009B0: 44 52 3B 4C 4F 4F 50 31  3C 52 49 47 48 54 43 4F  |DR;LOOP1<RIGHTCO|
000009C0: 4C 3B 4C 4F 4F 50 31 2B  2B 2C 54 41 52 47 45 54  |L;LOOP1++,TARGET|
000009D0: 41 44 52 2B 2B 29 0D 1C  20 20 20 20 20 20 20 20  |ADR++)..        |
000009E0: 20 2A 54 41 52 47 45 54  41 44 52 20 3D 20 36 37  | *TARGETADR = 67|
000009F0: 3B 0D 1C 0D 1C 20 20 20  20 20 2A 54 41 52 47 45  |;....     *TARGE|
00000A00: 54 41 44 52 20 3D 20 31  31 30 3B 0D 1C 0D 1C 20  |TADR = 110;.... |
00000A10: 20 20 20 20 46 4F 52 20  28 4C 4F 4F 50 31 3D 55  |    FOR (LOOP1=U|
00000A20: 50 45 52 52 4F 57 2B 31  2C 54 41 52 47 45 54 41  |PERROW+1,TARGETA|
00000A30: 44 52 2B 3D 34 30 3B 4C  4F 4F 50 31 3C 44 4F 57  |DR+=40;LOOP1<DOW|
00000A40: 4E 52 4F 57 3B 4C 4F 4F  50 31 2B 2B 2C 54 41 52  |NROW;LOOP1++,TAR|
00000A50: 47 45 54 41 44 52 2B 3D  34 30 29 0D 1C 20 20 20  |GETADR+=40)..   |
00000A60: 20 20 20 20 20 20 2A 54  41 52 47 45 54 41 44 52  |      *TARGETADR|
00000A70: 20 3D 20 36 36 3B 0D 1C  0D 1C 20 20 20 20 20 2A  | = 66;....     *|
00000A80: 54 41 52 47 45 54 41 44  52 20 3D 20 31 32 35 3B  |TARGETADR = 125;|
00000A90: 0D 1C 0D 1C 20 20 20 20  20 46 4F 52 20 28 4C 4F  |....     FOR (LO|
00000AA0: 4F 50 31 3D 52 49 47 48  54 43 4F 4C 2D 31 2C 54  |OP1=RIGHTCOL-1,T|
00000AB0: 41 52 47 45 54 41 44 52  2D 2D 3B 4C 4F 4F 50 31  |ARGETADR--;LOOP1|
00000AC0: 3E 4C 45 46 54 43 4F 4C  3B 4C 4F 4F 50 31 2D 2D  |>LEFTCOL;LOOP1--|
00000AD0: 2C 54 41 52 47 45 54 41  44 52 2D 2D 29 0D 1C 20  |,TARGETADR--).. |
00000AE0: 20 20 20 20 20 20 20 20  2A 54 41 52 47 45 54 41  |        *TARGETA|
00000AF0: 44 52 20 3D 20 36 37 3B  0D 1C 0D 1C 20 20 20 20  |DR = 67;....    |
00000B00: 20 2A 54 41 52 47 45 54  41 44 52 20 3D 20 31 30  | *TARGETADR = 10|
00000B10: 39 3B 0D 1C 0D 1C 20 20  20 20 20 46 4F 52 20 28  |9;....     FOR (|
00000B20: 4C 4F 4F 50 31 3D 44 4F  57 4E 52 4F 57 2D 31 2C  |LOOP1=DOWNROW-1,|
00000B30: 54 41 52 47 45 54 41 44  52 2D 3D 34 30 3B 4C 4F  |TARGETADR-=40;LO|
00000B40: 4F 50 31 3E 55 50 45 52  52 4F 57 3B 4C 4F 4F 50  |OP1>UPERROW;LOOP|
00000B50: 31 2D 2D 2C 54 41 52 47  45 54 41 44 52 2D 3D 34  |1--,TARGETADR-=4|
00000B60: 30 29 0D 1C 20 20 20 20  20 20 20 20 20 2A 54 41  |0)..         *TA|
00000B70: 52 47 45 54 41 44 52 20  3D 20 36 36 3B 0D 1C 0D  |RGETADR = 66;...|
00000B80: 1C 0D 96 20 20 20 20 20  2F 2A 20 43 4C 45 41 52  |...     /* CLEAR|
00000B90: 20 57 49 4E 44 4F 57 20  2A 2F 0D 1C 0D 1C 0D 1C  | WINDOW */......|
00000BA0: 20 20 20 20 20 43 4C 45  41 52 57 49 4E 28 29 3B  |     CLEARWIN();|
00000BB0: 0D 1C 0D 1C 20 20 20 20  20 52 45 53 55 4C 54 20  |....     RESULT |
00000BC0: 3D 20 D4 D2 D5 C5 3B 0D  1C 0D 1C 20 20 20 DD 0D  |= ....;....   ..|
00000BD0: 1C 0D 1C 20 20 20 52 45  54 55 52 4E 28 52 45 53  |...   RETURN(RES|
00000BE0: 55 4C 54 29 3B 0D 1C 0D  1C DD 0D 1C 0D 1C 0D 1C  |ULT);...........|
00000BF0: 0D 96 49 4E 54 20 20 43  4C 4F 53 45 57 49 4E 28  |..INT  CLOSEWIN(|
00000C00: 29 0D 1C 0D 1C DB 0D 1C  0D 1C 20 20 20 20 20 20  |).........      |
00000C10: 20 20 20 49 4E 54 20 4C  4F 4F 50 31 2C 4C 4F 4F  |   INT LOOP1,LOO|
00000C20: 50 32 2C 42 59 54 49 4E  52 4F 57 2C 4D 45 4D 4F  |P2,BYTINROW,MEMO|
00000C30: 52 59 3B 0D 1C 55 4E 53  49 47 4E 45 44 20 49 4E  |RY;..UNSIGNED IN|
00000C40: 54 20 54 41 52 47 45 54  41 44 52 2C 53 4F 55 52  |T TARGETADR,SOUR|
00000C50: 43 45 41 44 52 3B 0D 1C  0D 1C 0D 1C 20 20 20 20  |CEADR;......    |
00000C60: 20 49 46 20 28 20 4E 45  57 57 49 4E 20 3E 20 2D  | IF ( NEWWIN > -|
00000C70: 31 20 29 0D 1C 20 20 20  20 20 20 DB 0D 1C 0D 96  |1 )..      .....|
00000C80: 20 20 20 20 20 2F 2A 20  52 45 53 54 4F 52 45 20  |     /* RESTORE |
00000C90: 48 49 44 44 45 4E 20 53  55 52 46 41 43 45 20 55  |HIDDEN SURFACE U|
00000CA0: 4E 44 45 52 20 57 49 4E  44 4F 57 20 2A 2F 0D 1C  |NDER WINDOW */..|
00000CB0: 0D 1C 20 20 20 20 20 20  20 20 54 41 52 47 45 54  |..        TARGET|
00000CC0: 41 44 52 20 3D 20 D3 C3  D2 C5 C5 CE 2B 34 30 2A  |ADR = ......+40*|
00000CD0: D7 C9 CE C4 CF D7 2E 52  4F 57 31 2B D7 C9 CE C4  |.......ROW1+....|
00000CE0: CF D7 2E 43 4F 4C 31 3B  0D 1C 20 20 20 20 20 20  |...COL1;..      |
00000CF0: 20 20 53 4F 55 52 43 45  41 44 52 20 3D 20 D7 C9  |  SOURCEADR = ..|
00000D00: CE C4 CF D7 2E 53 54 4F  52 45 50 54 52 3B 0D 1C  |.....STOREPTR;..|
00000D10: 20 20 20 20 20 20 20 20  42 59 54 49 4E 52 4F 57  |        BYTINROW|
00000D20: 20 20 3D 20 31 2B D7 C9  CE C4 CF D7 2E 43 4F 4C  |  = 1+.......COL|
00000D30: 32 2D D7 C9 CE C4 CF D7  2E 43 4F 4C 31 3B 0D 1C  |2-.......COL1;..|
00000D40: 0D 1C 46 4F 52 28 0D 1C  4C 4F 4F 50 31 3D D7 C9  |..FOR(..LOOP1=..|
00000D50: CE C4 CF D7 2E 52 4F 57  31 3B 4C 4F 4F 50 31 3C  |.....ROW1;LOOP1<|
00000D60: 3D D7 C9 CE C4 CF D7 2E  52 4F 57 32 3B 4C 4F 4F  |=.......ROW2;LOO|
00000D70: 50 31 2B 2B 2C 54 41 52  47 45 54 41 44 52 2B 3D  |P1++,TARGETADR+=|
00000D80: 34 30 2C 53 4F 55 52 43  45 41 44 52 2B 3D 42 59  |40,SOURCEADR+=BY|
00000D90: 54 49 4E 52 4F 57 29 0D  1C 20 20 20 20 20 20 20  |TINROW)..       |
00000DA0: 20 4D 4F 56 45 28 54 41  52 47 45 54 41 44 52 2C  | MOVE(TARGETADR,|
00000DB0: 42 59 54 49 4E 52 4F 57  2C 53 4F 55 52 43 45 41  |BYTINROW,SOURCEA|
00000DC0: 44 52 2C 35 36 29 3B 0D  1C 0D 96 20 20 20 20 20  |DR,56);....     |
00000DD0: 2F 2A 20 52 45 54 55 52  4E 20 4C 41 53 54 20 41  |/* RETURN LAST A|
00000DE0: 4C 4C 4F 43 41 54 45 44  20 42 4C 4F 43 4B 20 2A  |LLOCATED BLOCK *|
00000DF0: 2F 0D 1C 0D 1C 20 20 20  20 20 20 20 20 4D 45 4D  |/....        MEM|
00000E00: 4F 52 59 20 3D 20 D7 C9  CE C4 CF D7 2E 42 59 54  |ORY = .......BYT|
00000E10: 45 53 20 26 20 30 58 37  46 46 46 3B 0D 1C 0D 1C  |ES & 0X7FFF;....|
00000E20: 20 20 20 20 20 20 20 20  46 52 45 45 20 28 4D 45  |        FREE (ME|
00000E30: 4D 4F 52 59 29 3B 0D 1C  0D 96 20 20 20 20 20 2F  |MORY);....     /|
00000E40: 2A 20 53 45 54 20 50 4F  49 4E 54 45 52 20 54 4F  |* SET POINTER TO|
00000E50: 20 50 52 45 53 45 4E 54  20 57 49 4E 44 4F 57 20  | PRESENT WINDOW |
00000E60: 2A 2F 0D 1C 0D 1C 20 20  20 20 20 20 20 20 4E 45  |*/....        NE|
00000E70: 57 57 49 4E 2D 2D 3B 0D  1C 0D 1C 20 20 20 20 20  |WWIN--;....     |
00000E80: DD 0D 1C 0D 1C DD 0D 00                           |........        |
.../* OPTIONAL MACRO DEFINITIONS AND FUN
CTIONS. */......../* MACRO DEFINITIONS *
/......#DEFINE POKE(ADDR,VALUE)  *ADDR=V
ALUE..#DEFINE PEEK(ADDR)        *ADDR...
.#DEFINE CLRSCR            PUTCHAR(CLR).
...#DEFINE WINDOW            WINDOW[NEWW
IN]..#DEFINE SCREEN            0XE000...
...../* WINDOW STRUCTURE */....STATIC ST
RUCT WINSTRUC..            .....        
      INT  ROW1;      /* UPPER LEFT CORN
ER */..              INT  COL1;..       
       INT  ROW2;      /* DOWN RIGHT COR
NER */..              INT  COL2;..      
        INT  BYTES;     /* NUMBER OF BYT
ES USED BY WINDOW */..              CHAR
 *STOREPTR; /* POINTER TO STORAGE OF HID
DEN  SURFACE */....            . WINDOW[
8];......STATIC INT  NEWWIN     = -1;..S
TATIC CHAR CLRSTR[41] = ."              
                          ".;....../* FU
NCTION DECLARATIONS */......VOID CENTRE(
STRING)....CHAR *STRING;.........INT  BY
TES;..INT  *LINE = 214;....     BYTES = 
(40 - STRLEN(STRING)) / 2;....     CURSO
R(*LINE,BYTES);....     PUTS(STRING,STDI
O);...........VOID CLEARWIN().........IN
T  LOOP1,ROWADDR,BYTEINROW;......     RO
WADDR   = SCREEN+WINDOW.ROW1*40+40+WINDO
W.COL1+1;..     BYTEINROW = WINDOW.COL2-
WINDOW.COL1-1;....     FOR (LOOP1=WINDOW
.ROW1+1;LOOP1<WINDOW.ROW2;LOOP1++,ROWADD
R+=40)..         MOVE (ROWADDR,BYTEINROW
,&CLRSTR[0]);.................BOOLEAN OP
ENWIN(UPERROW,LEFTCOL,DOWNROW,RIGHTCOL).
...INT     UPERROW,LEFTCOL,DOWNROW,RIGHT
COL;.........INT     I,LOOP1,LOOP2,BYTIN
ROW;..INT     SOURCEADR,STOREADR;..CHAR 
   *TARGETADR,*COLOR = 646;..CHAR    *BO
RDER = 53280;..BOOLEAN RESULT  = FALSE;.
.....  IF ( NEWWIN < 7 )..   .....     /
* INITIALIZE A NEW WINDOW */....     NEW
WIN++;....     /* CALCULATE NUMBER OF BY
TES IN THE WINDOW */....     WINDOW.BYTE
S =  (1+DOWNROW-UPERROW)*(1+RIGHTCOL-LEF
TCOL);....     /* ALLOCATE STORAGE AREA 
FOR HIDDEN SURFACE */....     STOREADR =
 ALLOC(WINDOW.BYTES);..     WINDOW.STORE
PTR = STOREADR;....     /* STORE CORDINA
TES FOR WINDOW */....     WINDOW.ROW1 = 
UPERROW;..     WINDOW.COL1 = LEFTCOL;.. 
    WINDOW.ROW2 = DOWNROW;..     WINDOW.
COL2 = RIGHTCOL;....     /* STORE HIDDEN
 SURFACE TO ALLOCATED BLOCK */....     S
OURCEADR = SCREEN+40*UPERROW+LEFTCOL;.. 
    BYTINROW  = 1+RIGHTCOL-LEFTCOL;.... 
    FOR(LOOP1=UPERROW;LOOP1<=DOWNROW;LOO
P1++,SOURCEADR+=40,STOREADR+=BYTINROW)..
         MOVE(STOREADR,BYTINROW,SOURCEAD
R,56);......     /* DRAW FRAME ROUND WIN
DOW */......     TARGETADR = SCREEN+40*U
PERROW+LEFTCOL;....     *TARGETADR = 112
;....     FOR (LOOP1=LEFTCOL+1,++TARGETA
DR;LOOP1<RIGHTCOL;LOOP1++,TARGETADR++)..
         *TARGETADR = 67;....     *TARGE
TADR = 110;....     FOR (LOOP1=UPERROW+1
,TARGETADR+=40;LOOP1<DOWNROW;LOOP1++,TAR
GETADR+=40)..         *TARGETADR = 66;..
..     *TARGETADR = 125;....     FOR (LO
OP1=RIGHTCOL-1,TARGETADR--;LOOP1>LEFTCOL
;LOOP1--,TARGETADR--)..         *TARGETA
DR = 67;....     *TARGETADR = 109;....  
   FOR (LOOP1=DOWNROW-1,TARGETADR-=40;LO
OP1>UPERROW;LOOP1--,TARGETADR-=40)..    
     *TARGETADR = 66;......     /* CLEAR
 WINDOW */......     CLEARWIN();....    
 RESULT = TRUE;....   .....   RETURN(RES
ULT);.............INT  CLOSEWIN().......
..         INT LOOP1,LOOP2,BYTINROW,MEMO
RY;..UNSIGNED INT TARGETADR,SOURCEADR;..
....     IF ( NEWWIN > -1 )..      .....
     /* RESTORE HIDDEN SURFACE UNDER WIN
DOW */....        TARGETADR = SCREEN+40*
WINDOW.ROW1+WINDOW.COL1;..        SOURCE
ADR = WINDOW.STOREPTR;..        BYTINROW
  = 1+WINDOW.COL2-WINDOW.COL1;....FOR(..
LOOP1=WINDOW.ROW1;LOOP1<=WINDOW.ROW2;LOO
P1++,TARGETADR+=40,SOURCEADR+=BYTINROW).
.        MOVE(TARGETADR,BYTINROW,SOURCEA
DR,56);....     /* RETURN LAST ALLOCATED
 BLOCK */....        MEMORY = WINDOW.BYT
ES & 0X7FFF;....        FREE (MEMORY);..
..     /* SET POINTER TO PRESENT WINDOW 
*/....        NEWWIN--;....     ........
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL