Hi al this code works but in the getcurspos function below I added the line push ah after an interrupt in the hope to push the contents of the register on the stack however I get a
zeonos.asm:90: error: invalid combination of opcode and operands
;----------------------------------------------------------------------
; Hello World Operating System
;
; Joel Gompert 2001
;
; Disclaimer: I am not responsible for any results of the use of the contents
; of this file
;----------------------------------------------------------------------
; --------------------------------------------
; Here is the operating system entry point
; --------------------------------------------
begin:
mov ax, cs ; Get the current segment
mov ds, ax ; The data is in this segment
cli ; disable interrupts while changing stack
mov ss, ax ; We'll use this segment for the stack too
mov sp, 0xfffe ; Start the stack at the top of the segment
sti ; Reenable interrupts
call zap
mov si, msg
; load address of our message
call sortcursor
call putstr ; print the message
call getcurspos
hang:
jmp hang ; just loop forever.
; --------------------------------------------
; data for our program
msg db 'Zeon', 0
stx db 'ReadyFI', 0
; ---------------------------------------------
; Print a null-terminated string on the screen
; ---------------------------------------------
zap:
;Gives you an on-screen button to click on with the mouse, and
;proceeds only when you do!
;mov ah,06h ;this calls SCROLL SCREEN UP
;mov al,00h ;AL specifies how many lines... 0 just clears the screen
;mov ch,00h
;mov cl,00h
;mov dh,85h ; cursor col
;mov dl,85h ;from left to right clears
;mov ah,02h
;mov bh,1
;int 10h
mov ah,06
mov al,00
mov bh,07
mov cx,00
mov dx,184fh
int 10h
retn
putstr:
lodsb ; AL = [DS:SI]
or al, al ; Set zero flag if al=0
jz putstrd ; jump to putstrd if zero flag is set
mov ah, 0x0e ; video function 0Eh (print char)
mov bx, 0x0007 ; color
int 0x10
jmp putstr
putstrd:
retn
sortcursor:
mov ah,02
mov dl,30
mov bh,00
mov dx,00
int 10h
retn
getcurspos:
mov ah,03h
mov bh,00h
int 10h
push ah //error here
retn