home *** CD-ROM | disk | FTP | other *** search
Wrap
;WINSRC.SEQ ;TSDS SOURCE CODE FOR C-128 (80 COL.) WINDOW WONDER (C) 1987 BY RON LE MON SCRORG=65517;.A=SC WIDTH, .X=WIN WIDTH, .Y=WIN HEIGTH SCTOP=229;WINDOW TOP SCLF=230;WINDOW LEFT SIDE MODEMSB=215;DISPLAY MODE:$80=80 COL, $00=40 COL GRAPHM=216;GRAPHIC MODE SWAPPER=65375;SWAP EDITOR LOCALS VDCADR=54784;8563 ADDRESS REGISTER VDCDAT=54785;8563 DATA REGISTER UPADHI=18;UPDATE ADDRSS HI DREG=31;DATA REGISTER PRIMM=65405;KERNAL PRINT UTILITY VM2=2605;VIDEO MATRIX POINTER (SHADOW REGISTER) EXMON=814;MONITOR COMMAND VECTOR *=8192 LDA #120;**************** INITIALIZE *********** SYS8291 ******** $2000 STA VM2 LDA GRAPHM ORA #32 STA GRAPHM LDA #35 LDY #36 LDX #37 STA CLEAR0+2 STY CLEAR1+2 STX CLEAR2+2 LDA #32 LDY #26 CLEAR LDX #0 CLEAR0 STA 8960,X CLEAR1 STA 9216,X CLEAR2 STA 9472,X INX BNE CLEAR0 INC CLEAR0+2 INC CLEAR1+2 INC CLEAR2+2 DEY BNE CLEAR LDA #0 STA GRAPHM LDA MODEMSB BMI BYPASS JSR PRIMM .BYT 'CHANGE MONITOR FROM COMPOSITE TO RGBI',0 JSR SWAPPER BYPASS JSR PRIMM .BYT 150,' C-128 WINDOW WONDER IS NOW INITIALIZED',13,158 .BYT 'SYS8192',153,' INITIALIZES WINDOW WONDER',13,158,'SYS8500',153 .BYT ' ALTERNATELY STORES AND THEN RESTORES 80 COL TEXT SCREEN WINDOWS' .BYT 13,158,0 RESET LDA #0;****************** RESET *********** SYS8463 ******* $210F STA FLAG LDA EXMON;LSB LDY EXMON+1;MSB CPY #34 BEQ SKIPIT STA NEWVEC1;LSB STY NEWVEC2;MSB SKIPIT LDA #<NEWVEC0 LDY #>NEWVEC0 STA EXMON;LSB STY EXMON+1;MSB LDA #1 STA INIT RTS ENTER JSR FINDAD;************** ENTER *********** SYS8500 ******* $2134 JSR TEST BCC CONT RTS CONT JSR TOGGLE JSR ROUTINE JSR POINTERS JSR ATTRIBUTES RTS FINDAD LDY #0;***************** FINDAD ********** SYS8522 ******* $214A LDA #0 STA HIADDRESS STA LOADDRESS STA COUNTER COUNT LDA COUNTER CMP SCTOP BEQ HOME STA COUNTER INC COUNTER LDA #80 CLC ADC LOADDRESS BCC SKIP0 INC HIADDRESS SKIP0 STA LOADDRESS JMP COUNT HOME LDA LOADDRESS CLC ADC SCLF BCC SKIP1 INC HIADDRESS SKIP1 STA LOADDRESS JSR SCRORG INX STX WIDTH INY STY HEIGTH RTS DATAR LDX #DREG;************* DATAR / READ ******* READ STX VDCADR WAIT BIT VDCADR BPL WAIT LDA VDCDAT RTS DATAW LDX #DREG;************* DATAW / WRITE ******* WRITE STX VDCADR WAIT2 BIT VDCADR BPL WAIT2 STA VDCDAT RTS TOGGLE LDA FLAG;************* TOGGLE FLAG ******** SYS8619 ****** $21AB CLC ADC #128 STA FLAG LDA #0 STA VICSCN0+1;LSB STA VICSCN1+1;LSB LDA #35 STA VICSCN0+2;MSB STA VICSCN1+2;MSB POINTERS LDA HEIGTH;********* SET POINTERS ******** SYS8644 ***** $21C4 STA HEIGTH2 LDA LOADDRESS LDY HIADDRESS RTS ATTRIBUTES PHA;*************** ATTRIBUTES ********* SYS8657 ***** $21D1 TYA CLC ADC #8 TAY PLA ROUTINE STA ADDLO+1;********** ROUTINE ************* SYS8664 ***** $21D8 STY ADDHI+1 BACK LDX #UPADHI ADDHI LDA #0 JSR WRITE INX ADDLO LDA #0 JSR WRITE LDY WIDTH MODE LDX FLAG BMI STORE VICSCN0 LDA $FFFF,Y JSR DATAW JMP NEXT STORE JSR DATAR VICSCN1 STA $FFFF,Y NEXT DEY BNE MODE LDA ADDLO+1 CLC ADC #80 BCC SKIP3 INC ADDHI+1 SKIP3 STA ADDLO+1 LDA VICSCN0+1;LSB CLC ADC WIDTH BCC SKIP4 INC VICSCN0+2;MSB SKIP4 STA VICSCN0+1;LSB LDA VICSCN1+1;LSB CLC ADC WIDTH BCC SKIP5 INC VICSCN1+2;MSB SKIP5 STA VICSCN1+1;LSB DEC HEIGTH2 BNE BACK RTS TEST LDA #0;******************* TEST *********** SYS8759 ****** $2237 CMP INIT BEQ ERROR LDA EXMON+1;MSB CMP #34 BEQ EXIT ERROR JSR PRIMM .BYT 147,150,17,' ERROR',15,' WINDOW WONDER NOT INITIALIZED',143 .BYT 153,' PRESS RETURN',13,158,'SYS8192',19,153,0 SEC RTS EXIT CLC RTS NEWVEC0 .BYT 76;*************** NEW VECTOR ****** SYS8854 ****** $2296 NEWVEC1 .BYT 255 NEWVEC2 .BYT 255 COUNTER .BYT 0;**************** REGISTERS ********** 8857 ****** $2299 LOADDRESS .BYT 0 HIADDRESS .BYT 0 WIDTH .BYT 0 HEIGTH .BYT 0 HEIGTH2 .BYT 0 FLAG .BYT 0 INIT .BYT 0 .END (672 BYTES) ; ;ADMITTEDLY I HAVE NOT DOCUMENTED THIS SOURCE FILE AS WELL AS I COULD HAVE 3030 ;BUT IT SERVED MY PURPOSES. FOR A MORE SCHOLARLY TREATISE ON THE SUBJECT ;OF PROGRAMMING THE 80 COLUMN (8563) CHIP SEE "COMMODORE 128 PROGRAMMER'S ;REFERENCE GUIDE", CHAPTER 10, PUBLISHED BY BANTAM BOOKS. ; ; RON LE MON ; 76556,2477