Driver for a PC Hercules Monochrome graphics card inside the ARGS PBI-ISA Interface#
VBI Driver that copies the ATARI Screen RAM into the Hercules Card RAM#
00010 .LI OFF
00020 ******************************
00030 * *
00040 * PROGRAMM:HERCULES DRIVER *
00050 * AUTOR :CARSTEN STROTMANN *
00060 * DATUM :27.05.94 *
00070 * VERSION :1.0 *
00080 * FUER :A.R.G.S *
00090 * *
00100 ******************************
00110 ;
00120 ADRL = $D540
00130 ADRH = $D541
00140 ADRS = $D520
00150 DATREG = $D521
00160 ;
00170 ADRLCTL = $D542
00180 ADRHCTL = $D543
00190 ADRSCTL = $D522
00200 DATCTL = $D523
00210 ;
00220 SAVMSC = $58
00230 ROWCRS = $54
00240 COLCRS = $55
00250 LMARGN = $52
00260 RMARGN = $53
00270 ADRESS = $3F
00280 BOTSCR = $2BF
00290 COLLEN = $26A
00300 MSCLEN = $268
00310 ;
00320 LPEG = 52
00330 HPEG = 60
00340 ;
00350 SETVBV = $E45C
00360 XITVBV = $E462
00370 ;
00380 ;
00390 .OR $7800
00400 .OF "D:HERC.COM"
00410 ;
00420 ; INIT DER INTERFACEKARTE
00430 ; PIAS 68B21
00440 ;
00450 IINIT
00460 LDA #56
00470 STA ADRLCTL
00480 STA ADRHCTL
00490 STA ADRSCTL
00500 STA DATCTL
00510 ;
00520 LDA #255
00530 STA ADRL
00540 STA ADRH
00550 STA ADRS
00560 STA DATREG
00570 ;
00580 LDA #60
00590 STA ADRLCTL
00600 STA ADRHCTL
00610 STA ADRSCTL
00620 STA DATCTL
00630 ;
00640 ; INIT HERCULESKARTE TEXTMODUS
00650 ;
00660 HINIT
00670 LDA #16 ; RESET
00680 STA ADRS
00690 NOP
00700 NOP
00710 LDA #0
00720 STA ADRS
00730 ;
00740 STA ADRS
00750 LDA #3
00760 STA ADRH
00770 LDA #0
00780 JSR AUSGIO
00790 ;
00800 LDA #184
00810 STA ADRL
00820 LDA #32
00830 JSR AUSGIO
00840 ;
00850 LDX #0
00860 .1
00870 CPX #16 ; TEXTREG.
00880 BEQ .2 ; SETZEN
00890 LDA #180
00900 STA ADRL
00910 TXA
00920 JSR AUSGIO
00930 ;
00940 LDA #181
00950 STA ADRL
00960 LDA TXTINI,X
00970 JSR AUSGIO
00980 INX
00990 BNE .1
01000 ;
01010 .2
01020 LDA #184
01030 STA ADRL
01040 LDA #8
01050 JSR AUSGIO
01060 ;
01070 LDA #$98
01080 STA MSCLEN
01090 LDA #03
01100 STA MSCLEN+1
01110 ;
01120 CINIT LDA #80
01130 STA COLLEN
01140 LDA #COPY
01150 STA ADRESS
01160 LDA /COPY
01170 STA ADRESS+1
01180 JSR AUSGZ
01190 ;
01200 CLEAR
01210 LDA #CLRBUF
01220 STA ADRESS
01230 LDA /CLRBUF
01240 STA ADRESS+1
01250 JSR AUSGZ
01260 LDA ZEILE
01271 BEQ .1
01280 JMP CLEAR
01290 .1
01291 JSR AUSGZ
01300 JSR SCRINIT
01310 ; RTS
01320 ;
01330 XINIT LDX RMARGN
01340 INX
01350 STX COLLEN
01360 ;
01370 JMP VBIINIT
01380 ;
01390 ------------------------------
01400 TXTINI .DA #97,#80,#82,#15,#25,#6,#25,#25
01410 .DA #2,#13,#5,#12,#0,#0,#0,#0
01420 ------------------------------
01430 COPY .AT "††††»ÂÚ„ıÏÂÛ†‘ÚÂÈ‚ÂÚ†≠†®„©†±π𥆖ËÔÂÓÈÿ†”ÔÊÙ√Ú˜†≠†√·ÚÛÙÂÓ†”ÙÚÔÙÌ·ÓÓ†††††††††††"
01440 .BL 80,0
01450 CLRBUF .BL 80,0
01460 ------------------------------
01470 .OR $0600
01480 ; DATENAUSGABE AUF IO-SPEICHER
01490 ; DES PC (SEG. 0), WERT MUSS
01500 ; IM AKKU STEHEN
01510 AUSGIO
01520 STA DATREG
01530 LDA #LPEG
01540 STA ADRLCTL
01550 LDA #HPEG
01560 STA ADRLCTL
01570 RTS
01580 ------------------------------
01590 ; DATENAUSGABE AUF SPEICHER
01600 ; DES PC (SEG 1-15), WERT MUSS
01610 ; IM AKKU STEHEN
01620 AUSGABE
01630 STA DATREG
01640 LDA #LPEG
01650 STA ADRSCTL
01660 LDA #HPEG
01670 STA ADRSCTL
01680 RTS
01690 ------------------------------
01700 ; AUSGABE EINER ZEILE
01710 ; AUS DEM BILDSCHIRMSPEICHER
01720 AUSGZ
01730 LDA #11
01740 STA ADRS
01750 CLC
01760 LDA ZEILE
01770 ASL
01780 TAX
01790 LDA HZEILTAB+1,X
01800 STA ADRH
01810 STA ZADRH
01820 LDA HZEILTAB,X
01830 STA ADRL
01840 STA ZADRL
01850 .1
01860 LDY #0
01870 AUSGZ11
01880 STA ADRL
01890 LDA (ADRESS),Y
01900 PHA
01910 AND #$7F
01920 TAX
01930 LDA INTTAB,X
01940 JSR AUSGABE
01950 ;
01960 ATTR
01970 INC ZADRL
01980 LDA ZADRL
01990 STA ADRL
02000 PLA
02010 AND #$80
02020 BEQ NORMAL
02030 INVERS
02040 LDA #112
02050 BNE ATTRIB
02060 NORMAL
02070 LDA #7
02080 ATTRIB
02090 JSR AUSGABE
02100 ;
02110 INY
02120 CPY COLLEN
02130 BEQ AUSGZEND
02140 ;
02150 INC ZADRL
02160 BEQ AUSGZ12
02170 ;
02180 LDA ZADRL
02190 BNE AUSGZ11
02200 AUSGZ12
02210 INC ZADRH
02220 LDA ZADRH
02230 STA ADRH
02240 LDA ZADRL
02250 BEQ AUSGZ11
02260 AUSGZEND
02270 DEC ZEILE
02280 SEC
02290 LDA ADRESS
02300 SBC COLLEN
02310 STA ADRESS
02320 BCS .1
02330 DEC ADRESS+1
02340 .1
02350 RTS
02360 ------------------------------
02370 HZEILTAB
02380 .DA $0000,$00A0,$0140,$01E0
02390 .DA $0280,$0320,$03C0,$0460
02400 .DA $0500,$05A0,$0640,$06E0
02410 .DA $0780,$0820,$08C0,$0960
02420 .DA $0A00,$0AA0,$0B40,$0BE0
02430 .DA $0C80,$0D20,$0DC0,$0E60
02440 .DA $0F00
02450 ------------------------------
02460 ZEILE .HX 18
02470 ZADRL .HX 00
02480 ZADRH .HX 00
02490 ------------------------------
02500 VBI
02510 JSR AUSGZ
02520 JSR AUSGZ
02530 ; JSR AUSGZ
02540 LDA ZEILE
02550 BPL .1
02560 JSR AUSGZ
02570 JSR SCRINIT
02580 .1
02590 JMP XITVBV
02600 ------------------------------
02610 SCRINIT
02620 LDA BOTSCR
02630 STA ZEILE
02640 DEC ZEILE
02650 CLC
02660 LDA SAVMSC
02670 ADC MSCLEN
02680 STA ADRESS
02690 LDA SAVMSC+1
02700 ADC MSCLEN+1
02710 STA ADRESS+1
02720 RTS
02730 ------------------------------
02740 VBIINIT
02750 LDA #7
02760 LDY #VBI
02770 LDX /VBI
02780 JSR SETVBV
02790 ;
02800 RTS
02810 ------------------------------
02820 .OR $0400
02830 INTTAB
02840 .HX 202122232425
02850 .HX 262728292A2B
02860 .HX 2C2D2E2F3031
02870 .HX 323334353637
02880 .HX 38393A3B3C3D
02890 .HX 3E3F40414243
02900 .HX 444546474849
02910 .HX 4A4B4C4D4E4F
02920 .HX 505152535455
02930 .HX 565758595A5B
02940 .HX 5C5D5E5F03C3
02950 .HX DED9B4BF2F5C
02960 .HX B0FEB1F67FC4
02970 .HX 5F0105DAC4C5
02980 .HX 02DCDBC2C1DD
02990 .HX C0EE18191A1B
03000 .HX 606162636465
03010 .HX 666768696A6B
03020 .HX 6C6D6E6F7071
03030 .HX 727374757677
03040 .HX 78797A7B7C7D7E7F
03050 ------------------------------
03060 .OR $2E0
03070 .DA IINIT
03080 ------------------------------
BASIC Driver for Hercules Card#
00010 .LI OFF
00020 ******************************
00030 * *
00040 * PROGRAMM:HERCULES DRIVER *
00050 * AUTOR :CARSTEN STROTMANN *
00060 * DATUM :27.05.94 *
00070 * VERSION :1.0 *
00080 * FUER :BASIC *
00090 * *
00100 ******************************
00110 ;
00120 ADRL = $D540
00130 ADRH = $D541
00140 ADRS = $D520
00150 DATREG = $D521
00160 ;
00170 ADRLCTL = $D542
00180 ADRHCTL = $D543
00190 ADRSCTL = $D522
00200 DATCTL = $D523
00210 ;
00220 ADRESS = $3F
00230 ;
00240 LPEG = 52
00250 HPEG = 60
00260 ;
00270 ;
00280 .OR $0600
00290 .OF "D:HINIT.OBJ"
00300 ;
00310 ; INIT DER INTERFACEKARTE
00320 ; PIAS 68B21
00330 ;
00340 BINIT
00350 PLA ; BASIC PARAM.
00360 CMP #1
00370 BEQ .1
00380 RTS
00390 .1
00400 PLA
00410 STA ADRESS+1
00420 PLA
00430 STA ADRESS
00440 ; ADRESSE DER TABELLE
00450 ; BERECHNEN
00460 CLC
00470 LDA ADRESS
00480 ADC #$BD
00490 STA ADRESS
00500 BCC IINIT
00510 INC ADRESS+1
00520 IINIT
00530 LDA #56
00540 STA ADRLCTL
00550 STA ADRHCTL
00560 STA ADRSCTL
00570 STA DATCTL
00580 ;
00590 LDA #255
00600 STA ADRL
00610 STA ADRH
00620 STA ADRS
00630 STA DATREG
00640 ;
00650 LDA #60
00660 STA ADRLCTL
00670 STA ADRHCTL
00680 STA ADRSCTL
00690 STA DATCTL
00700 ;
00710 ; INIT HERCULESKARTE TEXTMODUS
00720 ;
00730 HINIT
00740 LDA #16 ; RESET
00750 STA ADRS
00760 NOP
00770 NOP
00780 LDA #0
00790 STA ADRS
00800 ;
00810 STA ADRS
00820 LDA #3
00830 STA ADRH
00840 LDA #0
00850 STA DATREG
00860 LDA #LPEG
00870 STA ADRLCTL
00880 LDA #HPEG
00890 STA ADRLCTL
00900 ;
00910 LDA #184
00920 STA ADRL
00930 LDA #32
00940 STA DATREG
00950 LDA #LPEG
00960 STA ADRLCTL
00970 LDA #HPEG
00980 STA ADRLCTL
00990 ;
01000 LDY #0
01010 .1
01020 CPY #16 ; TEXTREG.
01030 BEQ .2 ; SETZEN
01040 LDA #180
01050 STA ADRL
01060 TYA
01070 STA DATREG
01080 LDA #LPEG
01090 STA ADRLCTL
01100 LDA #HPEG
01110 STA ADRLCTL
01120 ;
01130 LDA #181
01140 STA ADRL
01150 LDA (ADRESS),Y
01160 STA DATREG
01170 LDA #LPEG
01180 STA ADRLCTL
01190 LDA #HPEG
01200 STA ADRLCTL
01210 INY
01220 BNE .1
01230 ;
01240 .2
01250 LDA #184
01260 STA ADRL
01270 LDA #8
01280 STA DATREG
01290 LDA #LPEG
01300 STA ADRLCTL
01310 LDA #HPEG
01320 STA ADRLCTL
01330 ;
01340 RTS
01350 ;
01360 ------------------------------
01370 TXTINI .DA #97,#80,#82,#15,#25,#6,#25,#25
01380 .DA #2,#13,#5,#12,#0,#0,#0,#0
01390 ------------------------------
Init Hercules Driver from Turbo-Basic#
1 DIM HI$(205),HP$(218),H$(80)
2 HINIT=ADR(HI$)
3 HPRINT=ADR(HP$)
4 HSTRING=ADR(H$)
5 OPEN #1,4,0,"D:HINIT.OBJ"
6 BGET #1,ADR(HI$),6
7 BGET #1,ADR(HI$),205
8 CLOSE #1
9 X=USR(HINIT,HINIT)
10 OPEN #1,4,0,"D:HPRINT.OBJ"
11 BGET #1,ADR(HP$),6
12 BGET #1,ADR(HP$),218
13 CLOSE #1
14 H$=" "
15 FOR U=0 TO 25
16 X=USR(HPRINT,HPRINT,0,U,40,HSTRING)
17 X=USR(HPRINT,HPRINT,40,U,40,HSTRING)
18 NEXT U