home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1987 June / Antic_Magazine_1987_06_Antic.atr / informer.m65 < prev    next >
Text File  |  2023-02-26  |  6KB  |  1 lines

  1. 0100 ; THE INFORMER - SOURCE CODE¢0110 ; BY MATT LOVELESS & MIKE EGGERS¢0120 ; (c)1987, ANTIC PUBLISHING, INC.¢0130     .TITLE "INFORMER II -- Internal status line"¢0140     *=  $0600¢0150 ;¢0160 SETVBV = $E45C  ;Sets VBL vector¢0170 XITVBV = $E462  ;VBLANK exit rtn¢0180 SDLST = $0230   ;Vector to D/L¢0190 CONSOL = $D01F  ;Console buttons¢0200 ROWCUR = $54    ;Cursor row¢0210 COLCUR = $55    ;Cursor column¢0220 SHFLOK = $02BE  ;CAPS/LWR status¢0230 INVFLG = $02B6  ;Inv. video flag¢0240 MEMLO = $90     ;BASIC low mem.¢0250 HIMEM = $02E5   ;System high mem¢0260 CASINI = $02    ;Cassette boot¢0270 ;                init. vector¢0280 BOOTF = $09     ;Boot flag¢0290     .PAGE "Setup system vectors"¢0300 ;==========================¢0310 ;  Put INFORMER online.¢0320 ;==========================¢0321 STARTCODE¢0330 SETUP¢0340     LDA #SETUP&255 ;high byte of 0311 ;                   init. addr.¢0350     STA CASINI¢0360     LDA #SETUP/256 ;low byte of¢0370 ;                   init. addr.¢0380     STA CASINI+1¢0390     LDA BOOTF   ;Cassette boot?¢0400     ORA #$02¢0410     STA BOOTF¢0420     LDA #$04    ;Check [OPTION]¢0430     BIT CONSOL¢0440     BNE ON¢0450 ;¢0460     RTS         ;If [OPTION]then¢0470 ;                don't set VBI's¢0480 ;¢0490 ON¢0500     LDX #DOLINE/256 ;Hi VBL vctr¢0510     LDY #DOLINE&255 ;Low byte¢0520     LDA #7      ;Use def. vector¢0530     JMP SETVBV  ;Set VBLANK vctr¢0540 ;¢0550 ;         (The RTS instruction¢0560 ;          of SETVBV will return¢0570 ;          control.)¢0580 ;¢0590     .PAGE "Build a new INFORMER line"¢0600 ;¢0610 DOLINE¢0620     LDA SDLST+1 ;If Hi byte of¢0630 ;                DLIST vector¢0640     CMP #DSPLST/256¢0650 ;                is the same as¢0660 ;                hi byte of mine¢0670     BEQ MAKELN  ;then DLIST is¢0680 ;                still setup.¢0690 ;¢0700 ;Setup new DISPLAY-LIST header¢0710     LDA SDLST   ;Set DLIST JuMP¢0720     CLC         ;to jump to¢0730 ;               ;current-DLIST+3¢0740     ADC #3      ;to avoid¢0750 ;                BLANK-8-LINES¢0760     STA JMPADR  ;instructions.¢0770     LDA SDLST+1¢0780     ADC #0¢0790     STA JMPADR+1¢0800     LDA #DSPLST&255 ;Reset DLIST¢0810     STA SDLST   ;    vector to¢0820     LDA #DSPLST/256 ;point to¢0830     STA SDLST+1 ;    my header.¢0840 ;¢0850 ; Create the informer line¢0860 ;¢0870 MAKELN¢0880     LDA ROWCUR  ;Print cur. row¢0890     LDY #RSPOT-MESSAGE¢0900 ;     (position in status line.)¢0910     JSR CONVRT¢0920 ;¢0930     LDA COLCUR  ;Print column¢0940     LDY #CSPOT-MESSAGE¢0950     JSR CONVRT¢0960 ;¢0970 ;Find the CAPS/LOWER¢0980 ;and INVERSE modes.¢0990     LDA SHFLOK  ;Get CAPS/LOWR¢1000 ;                status, convert¢1010     CLC         ;into an index¢1020     ROL A       ;between 0 and 2¢1030     ROL A¢1040     ROL A¢1050     TAX ¢1060     LDA SHFTBL,X ;Get visual¢1070 ;                 representation¢1080     ORA INVFLG  ;Check INVERSE¢1090     EOR #$80    ;Toggle inverse¢1100 ;                if necessary.¢1110     STA LSPOT¢1120 ;   Put free RAM on screen¢1130     SEC ¢1140     LDA HIMEM   ;subtract MEMLO¢1150 ;                from HIMEM¢1160     SBC MEMLO¢1170     TAY         ;save it in Y¢1180     LDA HIMEM+1¢1190     SBC MEMLO+1¢1200     LDX #$00¢1210 LOOP¢1220     PHA         ;save for later¢1230     LSR A       ;SHIFT HIGH¢1240 ;                NIBBLE DOWN¢1250     LSR A¢1260     LSR A¢1270     LSR A¢1280     JSR CB2AH   ;Convert binary¢1290 ;                to ATASCII hex¢1300     STA FRESPOT,X ;& display it¢1310     INX ¢1320     PLA ¢1330     AND #$0F    ;mask hi nibble¢1340     JSR CB2AH¢1350 ;¢1360     STA FRESPOT,X¢1370     INX ¢1380     CPX #$04¢1390     BEQ RETURN¢1400 ;¢1410     TYA ¢1420 ;¢1430     JMP LOOP¢1440 RETURN¢1450     JMP XITVBV  ;go home¢1460 ;¢1470     .PAGE "Convert binary to printable hex"¢1480 ;===============================¢1490 ;  CONVERT BINARY TO HEX¢1500 ;    (Mike made me do it)¢1510 ;===============================¢1520 CB2AH¢1530     CMP #$0A    ;Digit 0 thru 9?¢1540     BCC NUMBER  ;YES!!!¢1550 ;¢1560     CLC ¢1570     ADC #$97    ;Make it A-F¢1580     RTS ¢1590 ;¢1600 NUMBER¢1610     ORA #$90    ;Make it 0-9¢1620     RTS ¢1630     JMP RETURN  ;UNCONDITIONAL!¢1640 ;¢1650     .PAGE "Convert binary to printable"¢1660 CONVRT¢1670     LDX #4      ;Max 4x10 values¢1680 LOOP2¢1690     CMP MAXTBL,X ; <= to value?¢1700     BCS FOUND   ;Yes¢1710 ;¢1720     DEX         ;No, next check¢1730     BNE LOOP2¢1740 ;¢1750 FOUND¢1760     SEC ¢1770     SBC MAXTBL,X ;Pull off tens¢1780     ORA #$90    ;Make digit¢1790 ;                printable¢1800     STA MESSAGE+1,Y¢1810     LDA CHRTBL,X ;Print tens¢1820 ;                 digit¢1830     STA MESSAGE,Y¢1840     RTS ¢1850     .PAGE "Tables and message line"¢1860 ;==========================¢1870 ;  DATA AREAS AND TABLES¢1880 ;==========================¢1890 DSPLST¢1900 ;    Prints INFORMER line¢1910     .BYTE $70,$60,$10,$42¢1920     .WORD MESSAGE¢1930     .BYTE $01   ;Goto to old DL¢1940 JMPADR¢1950     .WORD 0¢1960 ;¢1970 SHFTBL¢1980     .BYTE $61,$21,$40 ;"A","a",""¢1990 MAXTBL¢2000     .BYTE 0,10,20,30,40 ;Tens¢2010 ;                        table¢2020 CHRTBL¢2030 ;    Printable tens:¢2040     .BYTE $90,$91,$92,$93,$94¢2050 ;¢2060 MESSAGE¢2070     .BYTE $80,$A9,$EE,$E6,$EF¢2080     .BYTE $F2,$ED,$E5,$F2,$80,$D6¢2090     .BYTE $AD,$EF,$E4,$E5,$9A,$80¢2100 LSPOT¢2110     .BYTE 0     ;Mode¢2120     .BYTE $80,$D6,$B2,$80¢2130 RSPOT¢2140     .BYTE 0,0   ;Row¢2150     .BYTE $80,$80,$A3,$80¢2160 CSPOT¢2170     .BYTE 0,0   ;Column¢2180     .BYTE $C2,$80,$A6,$80,$84¢2190 FRESPOT¢2200     .BYTE 0,0,0,0¢2210     .BYTE $80¢2220     *=  $02E0¢2230     .WORD STARTCODE¢