WINDOWS2.C
FILE INFORMATION
FILENAME(S): WINDOWS2.C
FILE TYPE(S): USR
FILE SIZE: 4.4K
FIRST SEEN: 2025-12-01 01:08:52
APPEARS ON: 1 disk(s)
FILE HASH
c25dae75222962cdcbbcfd47077ec5a96dc720c59a049b4268a60b00a2bab1b2
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| SUPER C V 2 0 | WINDOWS2.C | USR | hedning, loot | 13 | 0 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 85 81 9F 2F 2A 20 D7 49 4E 44 4F 57 20 52 4F 55 |.../* .INDOW ROU| 00000010: 54 49 4E 53 20 46 4F 52 20 54 48 45 20 C3 36 34 |TINS FOR THE .64| 00000020: 20 2A 2F 0D 1C 0D 1C 0D 1F 23 44 45 46 49 4E 45 | */......#DEFINE| 00000030: 20 D7 C9 CE C4 CF D7 20 20 57 49 4E 44 4F 57 5B | ...... WINDOW[| 00000040: 4E 45 57 57 49 4E 5D 0D 1F 23 44 45 46 49 4E 45 |NEWWIN]..#DEFINE| 00000050: 20 D3 C3 D2 C5 C5 CE 20 20 30 58 45 30 30 30 0D | ...... 0XE000.| 00000060: 1F 23 44 45 46 49 4E 45 20 D5 D0 20 20 20 20 20 |.#DEFINE .. | 00000070: 20 30 0D 1F 23 44 45 46 49 4E 45 20 C4 CF D7 CE | 0..#DEFINE ....| 00000080: 20 20 20 20 31 0D 1C 0D 1C 0D 9F 2F 2A 20 D7 49 | 1....../* .I| 00000090: 4E 44 4F 57 20 53 54 52 55 43 54 55 52 45 20 2A |NDOW STRUCTURE *| 000000A0: 2F 0D 1C 0D 9C 53 54 41 54 49 43 20 53 54 52 55 |/....STATIC STRU| 000000B0: 43 54 20 57 49 4E 53 54 52 55 43 0D 9C 20 20 20 |CT WINSTRUC.. | 000000C0: 20 20 20 20 20 20 20 20 20 DB 0D 9C 0D 9C 20 20 | ..... | 000000D0: 20 20 20 20 20 20 20 20 20 20 20 20 49 4E 54 20 | INT | 000000E0: 20 52 4F 57 31 3B 20 20 20 20 20 20 2F 2A 20 55 | ROW1; /* U| 000000F0: 50 50 45 52 20 4C 45 46 54 20 43 4F 52 4E 45 52 |PPER LEFT CORNER| 00000100: 20 2A 2F 0D 9C 20 20 20 20 20 20 20 20 20 20 20 | */.. | 00000110: 20 20 20 49 4E 54 20 20 43 4F 4C 31 3B 0D 9C 20 | INT COL1;.. | 00000120: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 4E 54 | INT| 00000130: 20 20 52 4F 57 32 3B 20 20 20 20 20 20 2F 2A 20 | ROW2; /* | 00000140: 44 4F 57 4E 20 52 49 47 48 54 20 43 4F 52 4E 45 |DOWN RIGHT CORNE| 00000150: 52 20 2A 2F 0D 9C 20 20 20 20 20 20 20 20 20 20 |R */.. | 00000160: 20 20 20 20 49 4E 54 20 20 43 4F 4C 32 3B 0D 9C | INT COL2;..| 00000170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 4E | IN| 00000180: 54 20 20 42 59 54 45 53 3B 20 20 20 20 20 2F 2A |T BYTES; /*| 00000190: 20 4E 55 4D 42 45 52 20 4F 46 20 42 59 54 45 53 | NUMBER OF BYTES| 000001A0: 20 55 53 45 44 20 42 59 20 57 49 4E 44 4F 57 20 | USED BY WINDOW | 000001B0: 2A 2F 0D 9C 20 20 20 20 20 20 20 20 20 20 20 20 |*/.. | 000001C0: 20 20 43 48 41 52 20 2A 53 54 4F 52 45 50 54 52 | CHAR *STOREPTR| 000001D0: 3B 20 2F 2A 20 50 4F 49 4E 54 45 52 20 54 4F 20 |; /* POINTER TO | 000001E0: 53 54 4F 52 41 47 45 20 4F 46 20 48 49 44 44 45 |STORAGE OF HIDDE| 000001F0: 4E 20 20 53 55 52 46 41 43 45 20 2A 2F 0D 9C 0D |N SURFACE */...| 00000200: 9C 20 20 20 20 20 20 20 20 20 20 20 20 DD 20 57 |. . W| 00000210: 49 4E 44 4F 57 5B 38 5D 3B 0D 9C 0D 9C 0D 9C 53 |INDOW[8];......S| 00000220: 54 41 54 49 43 20 49 4E 54 20 20 4E 45 57 57 49 |TATIC INT NEWWI| 00000230: 4E 20 20 20 20 20 3D 20 2D 31 3B 0D 9C 53 54 41 |N = -1;..STA| 00000240: 54 49 43 20 43 48 41 52 20 43 4C 52 53 54 52 5B |TIC CHAR CLRSTR[| 00000250: 34 31 5D 20 3D 20 DB 22 20 20 20 20 20 20 20 20 |41] = ." | 00000260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000280: 22 DD 3B 0D 1C 0D 1C 0D 9F 2F 2A 20 46 55 4E 43 |".;....../* FUNC| 00000290: 54 49 4F 4E 20 44 45 43 4C 41 52 41 54 49 4F 4E |TION DECLARATION| 000002A0: 53 20 2A 2F 0D 1C 0D 1C 0D 96 56 4F 49 44 20 43 |S */......VOID C| 000002B0: 4C 45 41 52 57 49 4E 28 29 0D 1C 0D 1C DB 0D 1C |LEARWIN().......| 000002C0: 0D 1C 49 4E 54 20 20 4C 4F 4F 50 31 2C 52 4F 57 |..INT LOOP1,ROW| 000002D0: 41 44 44 52 2C 42 59 54 45 49 4E 52 4F 57 3B 0D |ADDR,BYTEINROW;.| 000002E0: 1C 0D 1C 0D 1C 20 20 20 20 20 52 4F 57 41 44 44 |..... ROWADD| 000002F0: 52 20 20 20 3D 20 D3 C3 D2 C5 C5 CE 2B D7 C9 CE |R = ......+...| 00000300: C4 CF D7 2E 52 4F 57 31 2A 34 30 2B 34 30 2B D7 |....ROW1*40+40+.| 00000310: C9 CE C4 CF D7 2E 43 4F 4C 31 2B 31 3B 0D 1C 20 |......COL1+1;.. | 00000320: 20 20 20 20 42 59 54 45 49 4E 52 4F 57 20 3D 20 | BYTEINROW = | 00000330: D7 C9 CE C4 CF D7 2E 43 4F 4C 32 2D D7 C9 CE C4 |.......COL2-....| 00000340: CF D7 2E 43 4F 4C 31 2D 31 3B 0D 1C 0D 1C 20 20 |...COL1-1;.... | 00000350: 20 20 20 46 4F 52 20 28 4C 4F 4F 50 31 3D D7 C9 | FOR (LOOP1=..| 00000360: CE C4 CF D7 2E 52 4F 57 31 2B 31 3B 4C 4F 4F 50 |.....ROW1+1;LOOP| 00000370: 31 3C D7 C9 CE C4 CF D7 2E 52 4F 57 32 3B 4C 4F |1<.......ROW2;LO| 00000380: 4F 50 31 2B 2B 2C 52 4F 57 41 44 44 52 2B 3D 34 |OP1++,ROWADDR+=4| 00000390: 30 29 0D 1C 20 20 20 20 20 20 20 20 20 4D 4F 56 |0).. MOV| 000003A0: 45 20 28 52 4F 57 41 44 44 52 2C 42 59 54 45 49 |E (ROWADDR,BYTEI| 000003B0: 4E 52 4F 57 2C 26 43 4C 52 53 54 52 5B 30 5D 29 |NROW,&CLRSTR[0])| 000003C0: 3B 0D 1C 0D 1C 0D 1C DD 0D 1C 0D 1C 0D 1C 0D 1C |;...............| 000003D0: 0D 96 42 4F 4F 4C 45 41 4E 20 4F 50 45 4E 57 49 |..BOOLEAN OPENWI| 000003E0: 4E 28 55 50 45 52 52 4F 57 2C 4C 45 46 54 43 4F |N(UPERROW,LEFTCO| 000003F0: 4C 2C 44 4F 57 4E 52 4F 57 2C 52 49 47 48 54 43 |L,DOWNROW,RIGHTC| 00000400: 4F 4C 29 0D 1C 0D 1C 49 4E 54 20 20 20 20 20 55 |OL)....INT U| 00000410: 50 45 52 52 4F 57 2C 4C 45 46 54 43 4F 4C 2C 44 |PERROW,LEFTCOL,D| 00000420: 4F 57 4E 52 4F 57 2C 52 49 47 48 54 43 4F 4C 3B |OWNROW,RIGHTCOL;| 00000430: 0D 1C 0D 1C DB 0D 1C 0D 1C 49 4E 54 20 20 20 20 |.........INT | 00000440: 20 49 2C 4C 4F 4F 50 31 2C 4C 4F 4F 50 32 2C 42 | I,LOOP1,LOOP2,B| 00000450: 59 54 49 4E 52 4F 57 3B 0D 1C 49 4E 54 20 20 20 |YTINROW;..INT | 00000460: 20 20 53 4F 55 52 43 45 41 44 52 2C 53 54 4F 52 | SOURCEADR,STOR| 00000470: 45 41 44 52 3B 0D 1C 43 48 41 52 20 20 20 20 2A |EADR;..CHAR *| 00000480: 54 41 52 47 45 54 41 44 52 2C 2A 43 4F 4C 4F 52 |TARGETADR,*COLOR| 00000490: 20 3D 20 36 34 36 3B 0D 1C 43 48 41 52 20 20 20 | = 646;..CHAR | 000004A0: 20 2A 42 4F 52 44 45 52 20 3D 20 35 33 32 38 30 | *BORDER = 53280| 000004B0: 3B 0D 1C 42 4F 4F 4C 45 41 4E 20 52 45 53 55 4C |;..BOOLEAN RESUL| 000004C0: 54 20 20 3D 20 C6 C1 CC D3 C5 3B 0D 1C 0D 1C 0D |T = .....;.....| 000004D0: 1C 20 20 49 46 20 28 20 4E 45 57 57 49 4E 20 3C |. IF ( NEWWIN <| 000004E0: 20 37 20 29 0D 1C 20 20 20 DB 0D 1C 0D 96 20 20 | 7 ).. ..... | 000004F0: 20 20 20 2F 2A 20 49 4E 49 54 49 41 4C 49 5A 45 | /* INITIALIZE| 00000500: 20 41 20 4E 45 57 20 57 49 4E 44 4F 57 20 2A 2F | A NEW WINDOW */| 00000510: 0D 1C 0D 1C 20 20 20 20 20 4E 45 57 57 49 4E 2B |.... NEWWIN+| 00000520: 2B 3B 0D 1C 0D 96 20 20 20 20 20 2F 2A 20 43 41 |+;.... /* CA| 00000530: 4C 43 55 4C 41 54 45 20 4E 55 4D 42 45 52 20 4F |LCULATE NUMBER O| 00000540: 46 20 42 59 54 45 53 20 49 4E 20 54 48 45 20 57 |F BYTES IN THE W| 00000550: 49 4E 44 4F 57 20 2A 2F 0D 1C 0D 1C 20 20 20 20 |INDOW */.... | 00000560: 20 D7 C9 CE C4 CF D7 2E 42 59 54 45 53 20 3D 20 | .......BYTES = | 00000570: 20 28 31 2B 44 4F 57 4E 52 4F 57 2D 55 50 45 52 | (1+DOWNROW-UPER| 00000580: 52 4F 57 29 2A 28 31 2B 52 49 47 48 54 43 4F 4C |ROW)*(1+RIGHTCOL| 00000590: 2D 4C 45 46 54 43 4F 4C 29 3B 0D 1C 0D 96 20 20 |-LEFTCOL);.... | 000005A0: 20 20 20 2F 2A 20 41 4C 4C 4F 43 41 54 45 20 53 | /* ALLOCATE S| 000005B0: 54 4F 52 41 47 45 20 41 52 45 41 20 46 4F 52 20 |TORAGE AREA FOR | 000005C0: 48 49 44 44 45 4E 20 53 55 52 46 41 43 45 20 2A |HIDDEN SURFACE *| 000005D0: 2F 0D 1C 0D 1C 20 20 20 20 20 49 46 20 28 28 53 |/.... IF ((S| 000005E0: 54 4F 52 45 41 44 52 20 3D 20 4D 41 4C 4C 4F 43 |TOREADR = MALLOC| 000005F0: 28 D7 C9 CE C4 CF D7 2E 42 59 54 45 53 29 29 20 |(.......BYTES)) | 00000600: 21 3D 20 30 29 0D 1C 20 20 20 20 20 20 DB 0D 1C |!= 0).. ...| 00000610: 20 20 20 20 20 20 20 20 D7 C9 CE C4 CF D7 2E 53 | .......S| 00000620: 54 4F 52 45 50 54 52 20 3D 20 53 54 4F 52 45 41 |TOREPTR = STOREA| 00000630: 44 52 3B 0D 1C 0D 96 20 20 20 20 20 2F 2A 20 53 |DR;.... /* S| 00000640: 54 4F 52 45 20 43 4F 52 44 49 4E 41 54 45 53 20 |TORE CORDINATES | 00000650: 46 4F 52 20 57 49 4E 44 4F 57 20 2A 2F 0D 1C 0D |FOR WINDOW */...| 00000660: 1C 20 20 20 20 20 20 20 20 D7 C9 CE C4 CF D7 2E |. .......| 00000670: 52 4F 57 31 20 3D 20 55 50 45 52 52 4F 57 3B 0D |ROW1 = UPERROW;.| 00000680: 1C 20 20 20 20 20 20 20 20 D7 C9 CE C4 CF D7 2E |. .......| 00000690: 43 4F 4C 31 20 3D 20 4C 45 46 54 43 4F 4C 3B 0D |COL1 = LEFTCOL;.| 000006A0: 1C 20 20 20 20 20 20 20 20 D7 C9 CE C4 CF D7 2E |. .......| 000006B0: 52 4F 57 32 20 3D 20 44 4F 57 4E 52 4F 57 3B 0D |ROW2 = DOWNROW;.| 000006C0: 1C 20 20 20 20 20 20 20 20 D7 C9 CE C4 CF D7 2E |. .......| 000006D0: 43 4F 4C 32 20 3D 20 52 49 47 48 54 43 4F 4C 3B |COL2 = RIGHTCOL;| 000006E0: 0D 1C 0D 96 20 20 20 20 20 2F 2A 20 53 54 4F 52 |.... /* STOR| 000006F0: 45 20 48 49 44 44 45 4E 20 53 55 52 46 41 43 45 |E HIDDEN SURFACE| 00000700: 20 54 4F 20 41 4C 4C 4F 43 41 54 45 44 20 42 4C | TO ALLOCATED BL| 00000710: 4F 43 4B 20 2A 2F 0D 1C 0D 1C 20 20 20 20 20 20 |OCK */.... | 00000720: 20 20 53 4F 55 52 43 45 41 44 52 20 3D 20 D3 C3 | SOURCEADR = ..| 00000730: D2 C5 C5 CE 2B 34 30 2A 55 50 45 52 52 4F 57 2B |....+40*UPERROW+| 00000740: 4C 45 46 54 43 4F 4C 3B 0D 1C 20 20 20 20 20 20 |LEFTCOL;.. | 00000750: 20 20 42 59 54 49 4E 52 4F 57 20 20 3D 20 31 2B | BYTINROW = 1+| 00000760: 52 49 47 48 54 43 4F 4C 2D 4C 45 46 54 43 4F 4C |RIGHTCOL-LEFTCOL| 00000770: 3B 0D 1C 0D 1C 20 20 20 20 20 20 46 4F 52 28 4C |;.... FOR(L| 00000780: 4F 4F 50 31 3D 55 50 45 52 52 4F 57 3B 4C 4F 4F |OOP1=UPERROW;LOO| 00000790: 50 31 3C 3D 44 4F 57 4E 52 4F 57 3B 4C 4F 4F 50 |P1<=DOWNROW;LOOP| 000007A0: 31 2B 2B 2C 53 4F 55 52 43 45 41 44 52 2B 3D 34 |1++,SOURCEADR+=4| 000007B0: 30 2C 53 54 4F 52 45 41 44 52 2B 3D 42 59 54 49 |0,STOREADR+=BYTI| 000007C0: 4E 52 4F 57 29 0D 1C 20 20 20 20 20 20 20 20 20 |NROW).. | 000007D0: 4D 4F 56 45 28 53 54 4F 52 45 41 44 52 2C 42 59 |MOVE(STOREADR,BY| 000007E0: 54 49 4E 52 4F 57 2C 53 4F 55 52 43 45 41 44 52 |TINROW,SOURCEADR| 000007F0: 2C 35 36 29 3B 0D 1C 0D 1C 0D 96 20 20 20 20 20 |,56);...... | 00000800: 2F 2A 20 44 52 41 57 20 46 52 41 4D 45 20 52 4F |/* DRAW FRAME RO| 00000810: 55 4E 44 20 57 49 4E 44 4F 57 20 2A 2F 0D 1C 0D |UND WINDOW */...| 00000820: 1C 0D 1C 20 20 20 20 20 20 20 20 54 41 52 47 45 |... TARGE| 00000830: 54 41 44 52 20 3D 20 D3 C3 D2 C5 C5 CE 2B 34 30 |TADR = ......+40| 00000840: 2A 55 50 45 52 52 4F 57 2B 4C 45 46 54 43 4F 4C |*UPERROW+LEFTCOL| 00000850: 3B 0D 1C 0D 1C 20 20 20 20 20 20 20 20 2A 54 41 |;.... *TA| 00000860: 52 47 45 54 41 44 52 20 3D 20 31 30 34 3B 0D 1C |RGETADR = 104;..| 00000870: 0D 1C 20 20 20 20 20 20 20 20 46 4F 52 20 28 4C |.. FOR (L| 00000880: 4F 4F 50 31 3D 4C 45 46 54 43 4F 4C 2B 31 2C 2B |OOP1=LEFTCOL+1,+| 00000890: 2B 54 41 52 47 45 54 41 44 52 3B 4C 4F 4F 50 31 |+TARGETADR;LOOP1| 000008A0: 3C 52 49 47 48 54 43 4F 4C 3B 4C 4F 4F 50 31 2B |<RIGHTCOL;LOOP1+| 000008B0: 2B 2C 54 41 52 47 45 54 41 44 52 2B 2B 29 0D 1C |+,TARGETADR++)..| 000008C0: 20 20 20 20 20 20 20 20 20 20 20 20 2A 54 41 52 | *TAR| 000008D0: 47 45 54 41 44 52 20 3D 20 39 39 3B 0D 1C 0D 1C |GETADR = 99;....| 000008E0: 20 20 20 20 20 20 20 20 2A 54 41 52 47 45 54 41 | *TARGETA| 000008F0: 44 52 20 3D 20 31 30 35 3B 0D 1C 0D 1C 20 20 20 |DR = 105;.... | 00000900: 20 20 20 20 20 46 4F 52 20 28 4C 4F 4F 50 31 3D | FOR (LOOP1=| 00000910: 55 50 45 52 52 4F 57 2B 31 2C 54 41 52 47 45 54 |UPERROW+1,TARGET| 00000920: 41 44 52 2B 3D 34 30 3B 4C 4F 4F 50 31 3C 44 4F |ADR+=40;LOOP1<DO| 00000930: 57 4E 52 4F 57 3B 4C 4F 4F 50 31 2B 2B 2C 54 41 |WNROW;LOOP1++,TA| 00000940: 52 47 45 54 41 44 52 2B 3D 34 30 29 0D 1C 20 20 |RGETADR+=40).. | 00000950: 20 20 20 20 20 20 20 20 20 20 2A 54 41 52 47 45 | *TARGE| 00000960: 54 41 44 52 20 3D 20 31 30 33 3B 0D 1C 0D 1C 20 |TADR = 103;.... | 00000970: 20 20 20 20 20 20 20 2A 54 41 52 47 45 54 41 44 | *TARGETAD| 00000980: 52 20 3D 20 39 35 3B 0D 1C 0D 1C 20 20 20 20 20 |R = 95;.... | 00000990: 20 20 20 46 4F 52 20 28 4C 4F 4F 50 31 3D 52 49 | FOR (LOOP1=RI| 000009A0: 47 48 54 43 4F 4C 2D 31 2C 54 41 52 47 45 54 41 |GHTCOL-1,TARGETA| 000009B0: 44 52 2D 2D 3B 4C 4F 4F 50 31 3E 4C 45 46 54 43 |DR--;LOOP1>LEFTC| 000009C0: 4F 4C 3B 4C 4F 4F 50 31 2D 2D 2C 54 41 52 47 45 |OL;LOOP1--,TARGE| 000009D0: 54 41 44 52 2D 2D 29 0D 1C 20 20 20 20 20 20 20 |TADR--).. | 000009E0: 20 20 20 20 20 2A 54 41 52 47 45 54 41 44 52 20 | *TARGETADR | 000009F0: 3D 20 31 30 30 3B 0D 1C 0D 1C 20 20 20 20 20 20 |= 100;.... | 00000A00: 20 20 2A 54 41 52 47 45 54 41 44 52 20 3D 20 39 | *TARGETADR = 9| 00000A10: 34 3B 0D 1C 0D 1C 20 20 20 20 20 20 20 20 46 4F |4;.... FO| 00000A20: 52 20 28 4C 4F 4F 50 31 3D 44 4F 57 4E 52 4F 57 |R (LOOP1=DOWNROW| 00000A30: 2D 31 2C 54 41 52 47 45 54 41 44 52 2D 3D 34 30 |-1,TARGETADR-=40| 00000A40: 3B 4C 4F 4F 50 31 3E 55 50 45 52 52 4F 57 3B 4C |;LOOP1>UPERROW;L| 00000A50: 4F 4F 50 31 2D 2D 2C 54 41 52 47 45 54 41 44 52 |OOP1--,TARGETADR| 00000A60: 2D 3D 34 30 29 0D 1C 20 20 20 20 20 20 20 20 20 |-=40).. | 00000A70: 20 20 20 2A 54 41 52 47 45 54 41 44 52 20 3D 20 | *TARGETADR = | 00000A80: 31 30 31 3B 0D 1C 0D 1C 0D 96 20 20 20 20 20 2F |101;...... /| 00000A90: 2A 20 43 4C 45 41 52 20 57 49 4E 44 4F 57 20 2A |* CLEAR WINDOW *| 00000AA0: 2F 0D 1C 0D 1C 0D 1C 20 20 20 20 20 20 20 20 43 |/...... C| 00000AB0: 4C 45 41 52 57 49 4E 28 29 3B 0D 1C 0D 1C 20 20 |LEARWIN();.... | 00000AC0: 20 20 20 20 20 20 52 45 53 55 4C 54 20 3D 20 D4 | RESULT = .| 00000AD0: D2 D5 C5 3B 0D 1C 20 20 20 20 20 20 DD 0D 1C 20 |...;.. ... | 00000AE0: 20 20 20 20 45 4C 53 45 0D 1C 20 20 20 20 20 20 | ELSE.. | 00000AF0: 20 DB 0D 1C 20 20 20 20 20 20 20 20 4E 45 57 57 | ... NEWW| 00000B00: 49 4E 2D 2D 3B 0D 1C 20 20 20 20 20 20 20 DD 0D |IN--;.. ..| 00000B10: 1C 0D 1C 20 20 20 DD 0D 1C 0D 1C 20 20 20 52 45 |... ..... RE| 00000B20: 54 55 52 4E 28 52 45 53 55 4C 54 29 3B 0D 1C 0D |TURN(RESULT);...| 00000B30: 1C DD 0D 1C 0D 1C 0D 1C 0D 96 56 4F 49 44 20 43 |..........VOID C| 00000B40: 4C 4F 53 45 57 49 4E 28 29 0D 1C 0D 1C DB 0D 1C |LOSEWIN().......| 00000B50: 0D 1C 20 20 20 20 20 20 20 20 20 49 4E 54 20 4C |.. INT L| 00000B60: 4F 4F 50 31 2C 4C 4F 4F 50 32 2C 42 59 54 49 4E |OOP1,LOOP2,BYTIN| 00000B70: 52 4F 57 2C 4D 45 4D 4F 52 59 3B 0D 1C 55 4E 53 |ROW,MEMORY;..UNS| 00000B80: 49 47 4E 45 44 20 49 4E 54 20 54 41 52 47 45 54 |IGNED INT TARGET| 00000B90: 41 44 52 2C 53 4F 55 52 43 45 41 44 52 3B 0D 1C |ADR,SOURCEADR;..| 00000BA0: 0D 1C 0D 1C 20 20 20 20 20 49 46 20 28 20 4E 45 |.... IF ( NE| 00000BB0: 57 57 49 4E 20 3E 20 2D 31 20 29 0D 1C 20 20 20 |WWIN > -1 ).. | 00000BC0: 20 20 20 DB 0D 1C 0D 96 20 20 20 20 20 2F 2A 20 | ..... /* | 00000BD0: 52 45 53 54 4F 52 45 20 48 49 44 44 45 4E 20 53 |RESTORE HIDDEN S| 00000BE0: 55 52 46 41 43 45 20 55 4E 44 45 52 20 57 49 4E |URFACE UNDER WIN| 00000BF0: 44 4F 57 20 2A 2F 0D 1C 0D 1C 20 20 20 20 20 20 |DOW */.... | 00000C00: 20 20 54 41 52 47 45 54 41 44 52 20 3D 20 D3 C3 | TARGETADR = ..| 00000C10: D2 C5 C5 CE 2B 34 30 2A D7 C9 CE C4 CF D7 2E 52 |....+40*.......R| 00000C20: 4F 57 31 2B D7 C9 CE C4 CF D7 2E 43 4F 4C 31 3B |OW1+.......COL1;| 00000C30: 0D 1C 20 20 20 20 20 20 20 20 53 4F 55 52 43 45 |.. SOURCE| 00000C40: 41 44 52 20 3D 20 D7 C9 CE C4 CF D7 2E 53 54 4F |ADR = .......STO| 00000C50: 52 45 50 54 52 3B 0D 1C 20 20 20 20 20 20 20 20 |REPTR;.. | 00000C60: 42 59 54 49 4E 52 4F 57 20 20 3D 20 31 2B D7 C9 |BYTINROW = 1+..| 00000C70: CE C4 CF D7 2E 43 4F 4C 32 2D D7 C9 CE C4 CF D7 |.....COL2-......| 00000C80: 2E 43 4F 4C 31 3B 0D 1C 0D 1C 46 4F 52 28 0D 1C |.COL1;....FOR(..| 00000C90: 4C 4F 4F 50 31 3D D7 C9 CE C4 CF D7 2E 52 4F 57 |LOOP1=.......ROW| 00000CA0: 31 3B 4C 4F 4F 50 31 3C 3D D7 C9 CE C4 CF D7 2E |1;LOOP1<=.......| 00000CB0: 52 4F 57 32 3B 4C 4F 4F 50 31 2B 2B 2C 54 41 52 |ROW2;LOOP1++,TAR| 00000CC0: 47 45 54 41 44 52 2B 3D 34 30 2C 53 4F 55 52 43 |GETADR+=40,SOURC| 00000CD0: 45 41 44 52 2B 3D 42 59 54 49 4E 52 4F 57 29 0D |EADR+=BYTINROW).| 00000CE0: 1C 20 20 20 20 20 20 20 20 4D 4F 56 45 28 54 41 |. MOVE(TA| 00000CF0: 52 47 45 54 41 44 52 2C 42 59 54 49 4E 52 4F 57 |RGETADR,BYTINROW| 00000D00: 2C 53 4F 55 52 43 45 41 44 52 2C 35 36 29 3B 0D |,SOURCEADR,56);.| 00000D10: 1C 0D 96 20 20 20 20 20 2F 2A 20 52 45 54 55 52 |... /* RETUR| 00000D20: 4E 20 4C 41 53 54 20 41 4C 4C 4F 43 41 54 45 44 |N LAST ALLOCATED| 00000D30: 20 42 4C 4F 43 4B 20 2A 2F 0D 1C 0D 1C 20 20 20 | BLOCK */.... | 00000D40: 20 20 20 20 20 4D 45 4D 4F 52 59 20 3D 20 4D 46 | MEMORY = MF| 00000D50: 52 45 45 20 28 D7 C9 CE C4 CF D7 2E 42 59 54 45 |REE (.......BYTE| 00000D60: 53 29 3B 0D 1C 0D 96 20 20 20 20 20 2F 2A 20 53 |S);.... /* S| 00000D70: 45 54 20 50 4F 49 4E 54 45 52 20 54 4F 20 50 52 |ET POINTER TO PR| 00000D80: 45 53 45 4E 54 20 57 49 4E 44 4F 57 20 2A 2F 0D |ESENT WINDOW */.| 00000D90: 1C 0D 1C 20 20 20 20 20 20 20 20 4E 45 57 57 49 |... NEWWI| 00000DA0: 4E 2D 2D 3B 0D 1C 0D 1C 20 20 20 20 20 DD 0D 1C |N--;.... ...| 00000DB0: 0D 1C DD 0D 1C 0D 1C 0D 1C 0D 96 42 4F 4F 4C 45 |...........BOOLE| 00000DC0: 41 4E 20 53 43 52 4F 4C 4C 57 49 4E 28 55 50 4F |AN SCROLLWIN(UPO| 00000DD0: 52 44 4F 57 4E 29 0D 1C 0D 1C 49 4E 54 20 55 50 |RDOWN)....INT UP| 00000DE0: 4F 52 44 4F 57 4E 3B 0D 1C 0D 1C DB 0D 1C 0D 1C |ORDOWN;.........| 00000DF0: 42 4F 4F 4C 45 41 4E 20 52 45 53 55 4C 54 20 3D |BOOLEAN RESULT =| 00000E00: 20 C6 C1 CC D3 C5 3B 0D 1C 0D 1C 43 48 41 52 20 | .....;....CHAR | 00000E10: 2A 54 41 52 47 45 54 41 44 44 52 2C 2A 53 4F 55 |*TARGETADDR,*SOU| 00000E20: 52 43 45 41 44 44 52 3B 0D 1C 49 4E 54 20 20 4C |RCEADDR;..INT L| 00000E30: 4F 4F 50 2C 42 59 54 45 49 4E 52 4F 57 3B 0D 1C |OOP,BYTEINROW;..| 00000E40: 0D 1C 0D 1C 49 46 20 28 4E 45 57 57 49 4E 3E 2D |....IF (NEWWIN>-| 00000E50: 31 29 0D 1C 20 DB 0D 1C 20 20 20 52 45 53 55 4C |1).. ... RESUL| 00000E60: 54 3D D4 D2 D5 C5 3B 0D 1C 0D 1C 20 20 20 42 59 |T=....;.... BY| 00000E70: 54 45 49 4E 52 4F 57 3D D7 C9 CE C4 CF D7 2E 43 |TEINROW=.......C| 00000E80: 4F 4C 32 2D D7 C9 CE C4 CF D7 2E 43 4F 4C 31 2D |OL2-.......COL1-| 00000E90: 31 3B 0D 1C 0D 1C 20 20 20 49 46 20 28 55 50 4F |1;.... IF (UPO| 00000EA0: 52 44 4F 57 4E 3D 3D D5 D0 29 0D 1C 20 20 20 20 |RDOWN==..).. | 00000EB0: DB 0D 1C 20 20 20 20 20 20 54 41 52 47 45 54 41 |... TARGETA| 00000EC0: 44 44 52 3D D3 C3 D2 C5 C5 CE 2B D7 C9 CE C4 CF |DDR=......+.....| 00000ED0: D7 2E 52 4F 57 31 2A 34 30 2B 34 31 2B D7 C9 CE |..ROW1*40+41+...| 00000EE0: C4 CF D7 2E 43 4F 4C 31 3B 0D 1C 20 20 20 20 20 |....COL1;.. | 00000EF0: 20 53 4F 55 52 43 45 41 44 44 52 3D 54 41 52 47 | SOURCEADDR=TARG| 00000F00: 45 54 41 44 44 52 2B 34 30 3B 0D 1C 0D 1C 46 4F |ETADDR+40;....FO| 00000F10: 52 20 28 4C 4F 4F 50 3D D7 C9 CE C4 CF D7 2E 52 |R (LOOP=.......R| 00000F20: 4F 57 31 2B 31 3B 4C 4F 4F 50 3C D7 C9 CE C4 CF |OW1+1;LOOP<.....| 00000F30: D7 2E 52 4F 57 32 2D 31 3B 4C 4F 4F 50 2B 2B 2C |..ROW2-1;LOOP++,| 00000F40: 54 41 52 47 45 54 41 44 44 52 2B 3D 34 30 2C 53 |TARGETADDR+=40,S| 00000F50: 4F 55 52 43 45 41 44 44 52 2B 3D 34 30 29 0D 1C |OURCEADDR+=40)..| 00000F60: 20 20 DB 0D 1C 20 20 20 20 4D 4F 56 45 28 54 41 | ... MOVE(TA| 00000F70: 52 47 45 54 41 44 44 52 2C 42 59 54 45 49 4E 52 |RGETADDR,BYTEINR| 00000F80: 4F 57 2C 53 4F 55 52 43 45 41 44 44 52 2C 35 33 |OW,SOURCEADDR,53| 00000F90: 29 3B 0D 1C 20 20 DD 0D 1C 0D 1C 20 20 20 20 20 |);.. ..... | 00000FA0: 20 4D 4F 56 45 28 54 41 52 47 45 54 41 44 44 52 | MOVE(TARGETADDR| 00000FB0: 2C 42 59 54 45 49 4E 52 4F 57 2C 26 43 4C 52 53 |,BYTEINROW,&CLRS| 00000FC0: 54 52 5B 30 5D 2C 35 33 29 3B 0D 1C 20 20 20 20 |TR[0],53);.. | 00000FD0: DD 0D 1C 20 20 20 45 4C 53 45 20 49 46 20 28 55 |... ELSE IF (U| 00000FE0: 50 4F 52 44 4F 57 4E 3D 3D C4 CF D7 CE 29 0D 1C |PORDOWN==....)..| 00000FF0: 20 20 20 20 20 20 20 20 20 DB 0D 1C 20 20 20 20 | ... | 00001000: 20 20 20 20 20 20 20 54 41 52 47 45 54 41 44 44 | TARGETADD| 00001010: 52 3D D3 C3 D2 C5 C5 CE 2B D7 C9 CE C4 CF D7 2E |R=......+.......| 00001020: 52 4F 57 32 2A 34 30 2D 33 39 2B D7 C9 CE C4 CF |ROW2*40-39+.....| 00001030: D7 2E 43 4F 4C 31 3B 0D 1C 20 20 20 20 20 20 20 |..COL1;.. | 00001040: 20 20 20 20 53 4F 55 52 43 45 41 44 44 52 3D 54 | SOURCEADDR=T| 00001050: 41 52 47 45 54 41 44 44 52 2D 34 30 3B 0D 1C 0D |ARGETADDR-40;...| 00001060: 1C 46 4F 52 20 28 4C 4F 4F 50 3D D7 C9 CE C4 CF |.FOR (LOOP=.....| 00001070: D7 2E 52 4F 57 32 2D 31 3B 4C 4F 4F 50 3E D7 C9 |..ROW2-1;LOOP>..| 00001080: CE C4 CF D7 2E 52 4F 57 31 2B 31 3B 4C 4F 4F 50 |.....ROW1+1;LOOP| 00001090: 2D 2D 2C 54 41 52 47 45 54 41 44 44 52 2D 3D 34 |--,TARGETADDR-=4| 000010A0: 30 2C 53 4F 55 52 43 45 41 44 44 52 2D 3D 34 30 |0,SOURCEADDR-=40| 000010B0: 29 0D 1C 20 20 DB 0D 1C 20 20 20 20 4D 4F 56 45 |).. ... MOVE| 000010C0: 28 54 41 52 47 45 54 41 44 44 52 2C 42 59 54 45 |(TARGETADDR,BYTE| 000010D0: 49 4E 52 4F 57 2C 53 4F 55 52 43 45 41 44 44 52 |INROW,SOURCEADDR| 000010E0: 2C 35 33 29 3B 0D 1C 20 20 DD 0D 1C 0D 1C 20 20 |,53);.. ..... | 000010F0: 20 20 20 20 20 20 20 20 20 4D 4F 56 45 28 54 41 | MOVE(TA| 00001100: 52 47 45 54 41 44 44 52 2C 42 59 54 45 49 4E 52 |RGETADDR,BYTEINR| 00001110: 4F 57 2C 26 43 4C 52 53 54 52 5B 30 5D 2C 35 33 |OW,&CLRSTR[0],53| 00001120: 29 3B 0D 1C 20 20 20 20 20 20 20 20 20 DD 0D 1C |);.. ...| 00001130: 20 20 20 45 4C 53 45 0D 1C 20 20 20 20 DB 0D 1C | ELSE.. ...| 00001140: 20 20 20 20 20 20 52 45 53 55 4C 54 20 3D 20 C6 | RESULT = .| 00001150: C1 CC D3 C5 3B 0D 1C 20 20 20 20 DD 0D 1C 20 DD |....;.. ... .| 00001160: 0D 1C 0D 1C 52 45 54 55 52 4E 28 52 45 53 55 4C |....RETURN(RESUL| 00001170: 54 29 3B 0D 1C 0D 1C DD 0D 1C 0D 1C 0D 1C 0D 00 |T);.............|
.../* WINDOW ROUTINS FOR THE C64 */.....
.#DEFINE WINDOW WINDOW[NEWWIN]..#DEFINE
SCREEN 0XE000..#DEFINE UP 0..#DEF
INE DOWN 1....../* WINDOW STRUCTURE *
/....STATIC STRUCT WINSTRUC..
..... INT ROW1; /* U
PPER LEFT CORNER */.. INT
COL1;.. INT ROW2; /*
DOWN RIGHT CORNER */.. INT
COL2;.. INT BYTES; /*
NUMBER OF BYTES USED BY WINDOW */..
CHAR *STOREPTR; /* POINTER TO
STORAGE OF HIDDEN SURFACE */....
. WINDOW[8];......STATIC INT NEWWI
N = -1;..STATIC CHAR CLRSTR[41] = ."
".;....../* FUNCTION DECLARATIONS */....
..VOID CLEARWIN().........INT LOOP1,ROW
ADDR,BYTEINROW;...... ROWADDR = SC
REEN+WINDOW.ROW1*40+40+WINDOW.COL1+1;..
BYTEINROW = WINDOW.COL2-WINDOW.COL1-
1;.... FOR (LOOP1=WINDOW.ROW1+1;LOOP
1<WINDOW.ROW2;LOOP1++,ROWADDR+=40)..
MOVE (ROWADDR,BYTEINROW,&CLRSTR[0])
;.................BOOLEAN OPENWIN(UPERRO
W,LEFTCOL,DOWNROW,RIGHTCOL)....INT U
PERROW,LEFTCOL,DOWNROW,RIGHTCOL;........
.INT I,LOOP1,LOOP2,BYTINROW;..INT
SOURCEADR,STOREADR;..CHAR *TARGETAD
R,*COLOR = 646;..CHAR *BORDER = 53280
;..BOOLEAN RESULT = FALSE;...... IF (
NEWWIN < 7 ).. ..... /* INITIALIZE
A NEW WINDOW */.... NEWWIN++;....
/* CALCULATE NUMBER OF BYTES IN THE W
INDOW */.... WINDOW.BYTES = (1+DOWN
ROW-UPERROW)*(1+RIGHTCOL-LEFTCOL);....
/* ALLOCATE STORAGE AREA FOR HIDDEN S
URFACE */.... IF ((STOREADR = MALLOC
(WINDOW.BYTES)) != 0).. ...
WINDOW.STOREPTR = STOREADR;.... /* S
TORE CORDINATES FOR WINDOW */....
WINDOW.ROW1 = UPERROW;.. WINDOW.
COL1 = LEFTCOL;.. WINDOW.ROW2 = D
OWNROW;.. WINDOW.COL2 = RIGHTCOL;
.... /* STORE HIDDEN SURFACE TO ALLO
CATED BLOCK */.... SOURCEADR = SC
REEN+40*UPERROW+LEFTCOL;.. BYTINR
OW = 1+RIGHTCOL-LEFTCOL;.... FOR(L
OOP1=UPERROW;LOOP1<=DOWNROW;LOOP1++,SOUR
CEADR+=40,STOREADR+=BYTINROW)..
MOVE(STOREADR,BYTINROW,SOURCEADR,56);...
... /* DRAW FRAME ROUND WINDOW */...
... TARGETADR = SCREEN+40*UPERROW
+LEFTCOL;.... *TARGETADR = 104;..
.. FOR (LOOP1=LEFTCOL+1,++TARGETA
DR;LOOP1<RIGHTCOL;LOOP1++,TARGETADR++)..
*TARGETADR = 99;....
*TARGETADR = 105;.... FOR (LOOP1=
UPERROW+1,TARGETADR+=40;LOOP1<DOWNROW;LO
OP1++,TARGETADR+=40).. *TARGE
TADR = 103;.... *TARGETADR = 95;.
... FOR (LOOP1=RIGHTCOL-1,TARGETA
DR--;LOOP1>LEFTCOL;LOOP1--,TARGETADR--).
. *TARGETADR = 100;....
*TARGETADR = 94;.... FOR (LOOP1
=DOWNROW-1,TARGETADR-=40;LOOP1>UPERROW;L
OOP1--,TARGETADR-=40).. *TARG
ETADR = 101;...... /* CLEAR WINDOW *
/...... CLEARWIN();.... RE
SULT = TRUE;.. ... ELSE..
... NEWWIN--;.. ..... ..
... RETURN(RESULT);.............VOID C
LOSEWIN()......... INT LOOP1,LOO
P2,BYTINROW,MEMORY;..UNSIGNED INT TARGET
ADR,SOURCEADR;...... IF ( NEWWIN > -
1 ).. ..... /* RESTORE HIDDEN S
URFACE UNDER WINDOW */.... TARGET
ADR = SCREEN+40*WINDOW.ROW1+WINDOW.COL1;
.. SOURCEADR = WINDOW.STOREPTR;..
BYTINROW = 1+WINDOW.COL2-WINDOW
.COL1;....FOR(..LOOP1=WINDOW.ROW1;LOOP1<
=WINDOW.ROW2;LOOP1++,TARGETADR+=40,SOURC
EADR+=BYTINROW).. MOVE(TARGETADR,
BYTINROW,SOURCEADR,56);.... /* RETUR
N LAST ALLOCATED BLOCK */.... MEM
ORY = MFREE (WINDOW.BYTES);.... /* S
ET POINTER TO PRESENT WINDOW */....
NEWWIN--;.... ..............BOOLE
AN SCROLLWIN(UPORDOWN)....INT UPORDOWN;.
........BOOLEAN RESULT = FALSE;....CHAR
*TARGETADDR,*SOURCEADDR;..INT LOOP,BYTE
INROW;......IF (NEWWIN>-1).. ... RESUL
T=TRUE;.... BYTEINROW=WINDOW.COL2-WIND
OW.COL1-1;.... IF (UPORDOWN==UP)..
... TARGETADDR=SCREEN+WINDOW.ROW1*4
0+41+WINDOW.COL1;.. SOURCEADDR=TARG
ETADDR+40;....FOR (LOOP=WINDOW.ROW1+1;LO
OP<WINDOW.ROW2-1;LOOP++,TARGETADDR+=40,S
OURCEADDR+=40).. ... MOVE(TARGETADDR
,BYTEINROW,SOURCEADDR,53);.. .....
MOVE(TARGETADDR,BYTEINROW,&CLRSTR[0],53
);.. ... ELSE IF (UPORDOWN==DOWN)..
... TARGETADDR=SCREEN
+WINDOW.ROW2*40-39+WINDOW.COL1;..
SOURCEADDR=TARGETADDR-40;....FOR (LO
OP=WINDOW.ROW2-1;LOOP>WINDOW.ROW1+1;LOOP
--,TARGETADDR-=40,SOURCEADDR-=40).. ...
MOVE(TARGETADDR,BYTEINROW,SOURCEADDR
,53);.. ..... MOVE(TARGETADDR
,BYTEINROW,&CLRSTR[0],53);.. ...
ELSE.. ... RESULT = FALSE;..
... .....RETURN(RESULT);.............
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL