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