P8000/WEGA/contrib/wdos/src/orgs.asm

322 lines
5.9 KiB
NASM

;**************************************************************************
;**************************************************************************
;
; WDOS-BIOS - Quelle (C) ZFT/KEAW Abt. Basissoftware - 1988
; Programm: orgs.asm
;
; Bearbeiter : P. Hoge
; Datum : 24.1.89
; Version : 1.1
;
;**************************************************************************
;
; System-Einspruenge und Vereinbarungen
;
;**************************************************************************
;**************************************************************************
.EXTERNAL DISK_SETUP;NEAR
.EXTERNAL SEEK;NEAR
.EXTERNAL START;NEAR
.EXTERNAL NMIINT;NEAR
.EXTERNAL BOOT;NEAR
.EXTERNAL KBOARD;NEAR
.EXTERNAL KBINT;NEAR
.EXTERNAL DISK;NEAR
.EXTERNAL DISKINT;NEAR
.EXTERNAL PRINTER;NEAR
.EXTERNAL VIDEO;NEAR
.EXTERNAL MEMSIZE;NEAR
.EXTERNAL EQUIP;NEAR
.EXTERNAL CASSETTE;NEAR
.EXTERNAL TOFDAY;NEAR
.EXTERNAL TIMERINT;NEAR
.EXTERNAL RS232;NEAR
.EXTERNAL PRSCREEN;NEAR
.public connect
.public reset
.public intin
.public ttyin
.public clkin
.public diskin
.public intout
.public ttyout
.public lpout
.public diskout
.public hdtyp
.public date
.public ttybuf
.public lpbuf
.public diskrq
.PUBLIC VECTOR_TABLE
.PUBLIC DUMMY_RET
.PUBLIC FD_TBL
.PUBLIC FD1_TBL
.PUBLIC FD2_TBL
.PUBLIC DISK_BASE
ORG 0D000H
connect: ;---- Uebergabe-Bereich
reset: db -1 ;reset
intin: db 0 ;intin
db 0 ;dummy in
db 0
db 0
db 0
ttyin: db 9 ;vector Tastatur
db 0 ;instop
db 0 ;inbyte
db 0 ;dummy
clkin: db 8 ;vector Timer
db 0 ;instop
db 0 ;inbyte
db 0 ;dummy
diskin: db 0eh ;vector Disk
db 0 ;instop
db 0 ;inbyte
db 0 ;dummy
intout: db 0 ;intout
db 0 ;dummy
db 0 ;dummy out
db 0
db 0
db 0
ttyout: db 0 ;outstop TTY
db 0 ;dummy
dw 0 ;noutb
lpout: db 0 ;outstop LP
db 0 ;dummy
dw 0 ;noutb
diskout db 0 ;outstop Disk
db 0 ;dummy
dw 0 ;noutb
hdtyp: db 0 ;Harddisk 0 Typ
db 0 ;Harddisk 1 Typ
date: db 0 ;sec Date/Time
db 0 ;min
db 0 ;hour
db 0 ;day
db 0 ;mon
db 0 ;year
ttybuf: blkb 800h
lpbuf: blkb 100h
diskrq: blkb 10h
ORG 0E05BH
RESET: JMP START
ORG 0E2C3H ;----- NMI ENTRY
NMI_INT:
JMP NMIINT
;------ FIXED DISK PARAMETER TABLE
FD_TBL: ;Drive 5 MByte
DW 500 ;CYLINDERS
DB 2 ;HEADS
DW 0 ;nicht benutzt
DW -1 ;(WRITE PRE-COMPENSATION CYL)
DB 0 ;nicht benutzt
DB 0 ;(CONTROL BYTE)
DB 0,0,0 ;nicht benutzt
DW 0 ;(LANDING ZONE) nicht benutzt
DB 10 ;SECTORS/TRACK
DB 0 ;nicht benutzt
FD1_TBL: ;Drive 10 MByte
DW 500 ;CYLINDERS
DB 4 ;HEADS
DW 0 ;nicht benutzt
DW -1 ;(WRITE PRE-COMPENSATION CYL)
DB 0 ;nicht benutzt
DB 0 ;(CONTROL BYTE)
DB 0,0,0 ;nicht benutzt
DW 0 ;(LANDING ZONE) nicht benutzt
DB 10 ;SECTORS/TRACK
DB 0 ;nicht benutzt
FD2_TBL: ;Drive 20 MByte
DW 500 ;CYLINDERS
DB 8 ;HEADS
DW 0 ;nicht benutzt
DW -1 ;(WRITE PRE-COMPENSATION CYL)
DB 0 ;nicht benutzt
DB 0 ;(CONTROL BYTE)
DB 0,0,0 ;nicht benutzt
DW 0 ;(LANDING ZONE) nicht benutzt
DB 10 ;SECTORS/TRACK
DB 0 ;nicht benutzt
ORG 0E6F2H ;------ BOOT LOADER INTERRUPT
BOOTSTRAP:
JMP BOOT
ORG 0E739H ;----- RS232
RS232_IO:
JMP RS232
ORG 0E82EH ;------ KEYBOARD
KBOARD_IO:
JMP KBOARD
ORG 0E987H ;------ KEYBOARD INT
KB_INT:
JMP KBINT
ORG 0EC59H ;------ DISKETTE I/O
DKETTE_IO:
JMP DISK
ORG 0EF57H ;------ DISKETTE INT
DISK_INT:
JMP DISKINT
ORG 0EFC7H ;------ DISK BASE
DISK_BASE:
DB 0
DB 0
DB 0
DB 2 ;512 Byte/Sector
DB 9 ;letzter Sector
DB 1BH ;GPL
DB 0FFH
DB 54H ;GPL fuer Format
DB 0F6H ;Datenbyte fuer Format
DB 0
DB 0
ORG 0EFD2H ;------ PRINTER IO
PRINTR_IO:
JMP PRINTER
ORG 0F045H ;------ VIDEO IO
.EXTERNAL SET_MODE;NEAR
.EXTERNAL SET_CTYPE;NEAR
.EXTERNAL SET_CPOS;NEAR
.EXTERNAL READ_CURSOR;NEAR
.EXTERNAL READ_LPEN;NEAR
.EXTERNAL ACT_DISP_PAGE;NEAR
.EXTERNAL SCROLL_UP;NEAR
.EXTERNAL SCROLL_DOWN;NEAR
.EXTERNAL READ_AC_CURRENT;NEAR
.EXTERNAL WRITE_AC_CURRENT;NEAR
.EXTERNAL WRITE_C_CURRENT;NEAR
.EXTERNAL SET_COLOR;NEAR
.EXTERNAL WRITE_DOT;NEAR
.EXTERNAL READ_DOT;NEAR
.EXTERNAL WRITE_TTY;NEAR
.EXTERNAL VIDEO_STATE;NEAR
M1: DW SET_MODE ;TABLE OF ROUTINES WITHIN VIDEO I/O
DW SET_CTYPE
DW SET_CPOS
DW READ_CURSOR
DW READ_LPEN
DW ACT_DISP_PAGE
DW SCROLL_UP
DW SCROLL_DOWN
DW READ_AC_CURRENT
DW WRITE_AC_CURRENT
DW WRITE_C_CURRENT
DW SET_COLOR
DW WRITE_DOT
DW READ_DOT
DW WRITE_TTY
DW VIDEO_STATE
M1L EQU $-M1
ORG 0F065H
VIDEO_IO:
JMP VIDEO
ORG 0F0A4H
VIDEO_PARMS:
DB 0
ORG 0F841H ;------ MEMORY SIZE
MEMSIZE_D:
JMP MEMSIZE
ORG 0F84DH ;------ EQUIPMENT DETERMINE
EQUIPMENT:
JMP EQUIP
ORG 0F859H ;------ CASSETTE (NO BIOS SUPPORT)
CASSET_IO:
JMP CASSETTE
ORG 0FE6EH ;------ TIME OF DAY
T_OF_DAY:
JMP TOFDAY
ORG 0FEA5H ;------ TIMER INTERRUPT
TIMER_INT:
JMP TIMERINT
ORG 0FEE3H ;------ VECTOR TABLE
VECTOR_TABLE:
DW DUMMY_RET ;INT 0
DW DUMMY_RET ;INT 1
DW NMI_INT ;INT 2
DW DUMMY_RET ;INT 3
DW DUMMY_RET ;INT 4
DW PR_SCREEN ;INT 5
DW DUMMY_RET ;INT 6
DW DUMMY_RET ;INT 7
DW TIMER_INT ;INT 8
DW KB_INT ;INT 9
DW DUMMY_RET ;INT A
DW DUMMY_RET ;INT B
DW DUMMY_RET ;INT C
DW DUMMY_RET ;INT D
DW DISK_INT ;INT E
DW DUMMY_RET ;INT F
;------ SOFTWARE INTERRUPTS
DW VIDEO_IO ;INT 10H
DW EQUIPMENT ;INT 11H
DW MEMSIZE_D ;INT 12H
DW DKETTE_IO ;INT 13H
DW RS232_IO ;INT 14H
DW CASSET_IO ;INT 15H
DW KBOARD_IO ;INT 16H
DW PRINTR_IO ;INT 17H
DW DUMMY_RET ;INT 18H
DW BOOTSTRAP ;INT 19H
DW T_OF_DAY ;INT 1AH
DW DUMMY_RET ;INT 1BH -- KEYBOARD BREAK ADDR
DW DUMMY_RET ;INT 1CH -- TIMER BREAK ADDR
DW VIDEO_PARMS ;INT 1DH -- VIDEO PARAMETERS
DW DISK_BASE ;INT 1EH -- DISK PARMS
DW 0 ;INT 1FH -- POINTER TO VIDEO EXT
ORG 0FF53H ;------ DUMMY INT HANDLER
DUMMY_RET:
IRET
ORG 0FF54H ;------ PRINT SCREEN
PR_SCREEN:
JMP PRSCREEN
ORG 0FFF0H ;------ POWER ON RESET
P_O_R: DB 0EAH ;HARD CODE JUMP
DW RESET ;OFFSET
DW 0F000H ;SEGMENT
db '01/10/88' ;RELEASE MARKER
;bei 01/10/84 (Original) wird Harddisk-
;Treiber im Disketten-BIOS benutzt
ORG 0FFFEH
DB 0FCH ;THIS PC'S ID
END