system/shard-x86-at/7/src/HSHARD.ASM

Raw file
Back to index

page 80,132
;******************************************************************************
;*                                                                            *
;*       S H A R D   -   M O D U L                                            *
;*                                                                            *
;*       fuer EUMEL auf 80286, 8086, 8088 Systemen                            *
;*                                                                            *
;*       SHard Version 7-PC/XT, PC/AT                                         *
;*                                                                            *
;*       Copyright (C) 1985, 86 Martin Schoenbeck, Spenge                     *
;*                                                                            *
;******************************************************************************


com2wrongirq equ 0
add4 equ 0
ast equ 0

at equ 0 
gensys equ 0
ramsys equ 0
pcxt equ 1
pcd equ 0
romharddisk equ 0
romfloppy equ 0
limited_to_360 equ 0
boot_size equ 0

hdsystem equ 1
withhd equ 1

setup_channel equ 28
dos_channel equ 29

shard group code
code segment word public 'code'
 assume cs:shard, ds:shard, es:nothing, ss:nothing

shstart:
     jmp los_gehts

     even

     include MACROS.ASM
     include MAC286.ASM
     include DEVICE.ASM
     include EUCONECT.ASM
     org 0a0h			;bei wort 80 beginnen
     include PATCHARE.ASM

     include SHMAIN.ASM

IBMat equ 0fch
com1base equ 03f8h
com1irq  equ 4
com2base equ 02f8h
 if com2wrongirq
   com2irq equ 5
 else
   com2irq  equ 3
 endif
 if add4
com4_1base equ 03e8h
com4_1irq  equ 3
com4_2base equ 03e0h
com4_2irq  equ 3
com4_3base equ 02f0h
com4_3irq  equ 3
com4_4base equ 02e8h
com4_4irq  equ 3
com8_1base equ 02e0h
com8_1irq  equ 3
com8_2base equ 0260h
com8_2irq  equ 3
com8_3base equ 02d8h
com8_3irq  equ 3
 else
com4_1base equ 02c0h
com4_1irq  equ 3
com4_2base equ 02c8h
com4_2irq  equ 3
com4_3base equ 02d0h
com4_3irq  equ 3
com4_4base equ 02d8h
com4_4irq  equ 3
com8_1base equ 02e0h
com8_1irq  equ 3
com8_2base equ 02e8h
com8_2irq  equ 3
com8_3base equ 02f0h
com8_3irq  equ 3
com8_4base equ 02f8h
com8_4irq  equ 3
add4_3base equ 03e8h
add4_3irq  equ 3
add4_4base equ 03e0h
add4_4irq  equ 3
add4_8base equ 0260h
add4_8irq  equ 3
 endif
ast0_1base equ 01a0h
ast0_1irq  equ 5
ast0_2base equ 01a8h
ast0_2irq  equ 5
ast0_3base equ 01b0h
ast0_3irq  equ 5
ast0_4base equ 01b8h
ast0_4irq  equ 5
ast1_1base equ 02a0h
ast1_1irq  equ 5
ast1_2base equ 02a8h
ast1_2irq  equ 5
ast1_3base equ 02b0h
ast1_3irq  equ 5
ast1_4base equ 02b8h
ast1_4irq  equ 5

int_ctlr equ 20h
first_ictlr_int equ 8

channel macro number,dev,ccb
channels = channels+1
selectentry = 5
     db number
     dw offset ccb
     if2
     dwb paramstart_,%&dev
     else
     dw 0                ;;weil in pass eins device evtl. unbekannt
     endif 
     endm

selecttable:
     db channels       ;anzahl kanaele hier setzen
channels = -1         ;nilchannel vorab abziehen
     channel 32,shardchannel,0
     channel 0,fixdisk,hgccb0
alterable_channels:
     channel 1,pc,0 
     channel 2,i8250,com1ccb
     channel 3,i8250,com2ccb
    if ast
     channel 4,i8250,ast0_1ccb
     channel 5,i8250,ast0_2ccb
     channel 6,i8250,ast0_3ccb
     channel 7,i8250,ast0_4ccb
     channel 8,i8250,ast1_1ccb
     channel 9,i8250,ast1_2ccb
     channel 10,i8250,ast1_3ccb
     channel 11,i8250,ast1_4ccb
    else
     channel 4,i8250,com4_1ccb
     channel 5,i8250,com4_2ccb
     channel 6,i8250,com4_3ccb
     channel 7,i8250,com4_4ccb
     channel 8,i8250,com8_1ccb
     channel 9,i8250,com8_2ccb
     channel 10,i8250,com8_3ccb
     ife add4  ;wenn nicht extra fuer add4, trotzdem vorsehen
     channel 11,i8250,add4_3ccb
     channel 12,i8250,add4_4ccb
     channel 13,i8250,add4_8ccb
     endif
    endif
;    channel 4,i8250,com3ccb
;    channel 5,i8250,com4ccb
     channel 15,parallel,para0ccb
     channel 14,parallel,para1ccb
     channel 16,parallel,para2ccb
     channel 28,fixdisk,hgccb1
     channel 29,fixdisk,hgccb2
  if 0 
     channel 30,archive,archive_0
     channel 31,archive,archive_1
  else
     channel 31,archive,archive_0
     channel 30,archive,archive_1
  endif
     channel -1,nilchannel,0
 
     include I8250.ASM
     include PCPAR.ASM
     include STREAM.ASM
     include NILCHAN.ASM
     include PCSCREEN.ASM
     include PCPLOT.ASM
     include PCSYS.ASM
     include FIXDISK.ASM
     include FLOPPY.ASM
     include CLOCK.ASM
     include WAIT.ASM
     include HARDWARE.ASM
     include BLOCKERR.ASM
 
     i8250_ccb com1,2
     i8250_ccb com2,3
    if ast
     i8250_ccb ast0_1,4
     i8250_ccb ast0_2,5
     i8250_ccb ast0_3,6
     i8250_ccb ast0_4,7
     i8250_ccb ast1_1,8
     i8250_ccb ast1_2,9
     i8250_ccb ast1_3,10
     i8250_ccb ast1_4,11
    else
     i8250_ccb com4_1,4
     i8250_ccb com4_2,5
     i8250_ccb com4_3,6
     i8250_ccb com4_4,7
     i8250_ccb com8_1,8
     i8250_ccb com8_2,9
     i8250_ccb com8_3,10
     ife add4  ;wenn nicht extra fuer add4, trotzdem vorsehen
     i8250_ccb add4_3,11
     i8250_ccb add4_4,12
     i8250_ccb add4_8,13
     endif
    endif
     para_ccb 0,15
     para_ccb 1,14
     para_ccb 2,16
 ;erlaubt drivetypen: highdensity, drive720
    if at
     archive_ccb 0,highdensity
     archive_ccb 1,0 ;drive720
    else
     archive_ccb 0,0
     archive_ccb 1,0
    endif 
     fix_ccb 0
     fix_ccb 1
     fix_ccb 2

sysmove:
     rep movsw
     jmp systemstart

     include BOOT.ASM

code ends

     end los_gehts