home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1988 October / Antic_Magazine_1988_10_Antic_Side_A.atr / xeprint.m65 < prev   
Text File  |  2023-02-26  |  4KB  |  1 lines

  1. 0100 ;XEPRINT SOURCE CODE¢0110 ;XEP-PRINT USR ROUTINE¢0120 ; FUNCTION:¢0130 ; A=USR(XEPRINT, X, Y, ADR(A$),¢0140 ;       LEN(A$) )¢0150 ;¢0160 ; Using direct screen RAM access,¢0170 ;write the string pointed to¢0180 ;on the graphics mode 0 display.¢0190 ; Handle CHR$(125), clear screen¢0200 ;properly, but all other chars¢0210 ;are printed. No editing, etc.¢0220 ; 30 A=USR(XEPFREAD, "D:PIC.GR8", ADR(BUF$))¢0230 SAVMSC = 88     ;Screen RAM pointer¢0240 RETURN = 155    ;Carraige Return¢0250 CLEAR = 125     ;clear screen¢0260 STRING = $D0    ; String pointer¢0270 STRLEN = STRING+2 ; String counter, 2 bytes¢0280 XPOS =  STRLEN+2 ; xpos of cursor¢0290 YPOS =  XPOS+1  ;ypos of cursor¢0300 PUTADR = YPOS+1 ;2byte screen pointer¢0310 ORGADR = PUTADR+2 ; Save original PUTADR here¢0320 CLRADR = ORGADR+2 ; Working register to clear screen¢0330 TEMP =  CLRADR+2 ; Work, convert ASCII to internal¢0340     *=  $0600¢0350     PLA ¢0360     CMP #$04¢0370     BEQ BEG1¢0380 ;¢0390     TAX ¢0400     BEQ LEAVE¢0410 ;¢0420 LOOPEM¢0430     PLA ¢0440     PLA ¢0450     DEX ¢0460     BNE LOOPEM¢0470 ;¢0480 LEAVE¢0490     RTS ¢0500 BEG1¢0510     LDA #$00¢0520     STA PUTADR¢0530     STA PUTADR+1¢0540     PLA ¢0550     PLA ¢0560     STA XPOS¢0570     PLA ¢0580     PLA ¢0590     STA YPOS¢0600     TAX ¢0610     BEQ NOADD¢0620 ;¢0630 BY40¢0640     LDA #40¢0650     CLC ¢0660     ADC PUTADR¢0670     STA PUTADR¢0680     BCC BY40A¢0690 ;¢0700     INC PUTADR+1¢0710 BY40A¢0720     DEX ¢0730     BNE BY40¢0740 ;¢0750 NOADD¢0760     LDA XPOS¢0770     CLC ¢0780     ADC PUTADR¢0790     STA PUTADR¢0800     BCC SAVEIT¢0810 ;¢0820     INC PUTADR+1¢0830 SAVEIT ;        Save orig. put addr¢0840 ;¢0850 ; Save start PUT address¢0860 ;¢0870     CLC ¢0880     LDA SAVMSC¢0890     ADC PUTADR¢0900     STA PUTADR¢0910     STA ORGADR¢0920     LDA SAVMSC+1¢0930     ADC PUTADR+1¢0940     STA PUTADR+1¢0950     STA ORGADR+1¢0960 ;¢0970 ; Get string address¢0980 ;¢0990     PLA ¢1000     STA STRING+1¢1010     PLA ¢1020     STA STRING¢1030     PLA         ; get string len¢1040     STA STRLEN+1¢1050     PLA ¢1060     STA STRLEN¢1070 ;¢1080 ; All inits complete, now¢1090 ;get the string handling¢1100 ;RETURN and CLEAR screen¢1110 ;chars. properly.¢1120 ;¢1130 PRINT¢1140     LDY #$00    ;Always zero here¢1150     SEC         ;DECREMENT, DONE TEST FIRST¢1160     LDA STRLEN¢1170     SBC #$01¢1180     STA STRLEN¢1190     BCS PRINT1¢1200 ;¢1210     LDA STRLEN+1 ;ALL DONE?¢1220     BEQ EXITNOW¢1230 ;¢1240     DEC STRLEN+1¢1250 PRINT1¢1260     LDA (STRING),Y¢1270     CMP #RETURN¢1280     BEQ RETURNIT¢1290 ;¢1300     CMP #CLEAR¢1310     BEQ CLEARIT¢1320 ;¢1330     STA TEMP¢1340     AND #$7F    ; Forget invid¢1350     TAX         ; Convert to screen¢1360     CPX #$60¢1370     BCS PUTNOW¢1380 ;¢1390     LDA #$40¢1400     CPX #$20    ; ASC<32 THEN ADD 64¢1410     BCC ADCV¢1420 ;¢1430     LDA #$E0    ; $E0 = -32 32<ASC<96¢1440 ADCV¢1450     CLC ¢1460     ADC TEMP¢1470     STA TEMP¢1480 PUTNOW ;        Store converted¢1490     LDA TEMP¢1500     STA (PUTADR),Y ;char on¢1510     INC PUTADR  ; screen¢1520     BNE NEXCHAR¢1530 ;¢1540     INC PUTADR+1¢1550 NEXCHAR ;       NEXT SCREEN CHARACTER¢1560     INC STRING¢1570     BNE PRINT¢1580 ;¢1590     INC STRING+1¢1600     BNE PRINT   ;CONTINUE¢1610 ;¢1620 EXITNOW ;       Go home¢1630     RTS ¢1640 ;¢1650 CLEARIT¢1660     LDA SAVMSC¢1670     STA CLRADR¢1680     LDA SAVMSC+1¢1690     STA CLRADR+1¢1700     LDX #$03    ; 3*256 = 768 OF 960¢1710     LDA #$00¢1720 CLEAR3¢1730     STA (CLRADR),Y¢1740     INY ¢1750     BNE CLEAR3¢1760 ;¢1770     INC CLRADR+1¢1780     DEX ¢1790     BNE CLEAR3¢1800 ;¢1810 CLEAR4¢1820     STA (CLRADR),Y¢1830     INY ¢1840     CPY #192    ; Last 192 bytes¢1850     BNE CLEAR4¢1860 ;¢1870     LDY #$00¢1880     BEQ NEXCHAR ; Continue¢1890 ;¢1900 RETURNIT ;      Use xpos for column¢1910     CLC ¢1920     LDA #40¢1930     ADC ORGADR¢1940     STA ORGADR¢1950     BCC RET1¢1960 ;¢1970     INC ORGADR+1¢1980 RET1¢1990     LDA ORGADR¢2000     STA PUTADR¢2010     LDA ORGADR+1¢2020     STA PUTADR+1¢2030     CLC ¢2040     BCC NEXCHAR¢2050 ;¢2060     .END ¢əəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəə