wok annotate linld/stuff/src/XMM.ASM @ rev 25040

cups-filters: use standard c++14
author Hans-G?nter Theisgen
date Fri May 27 07:47:27 2022 +0100 (2022-05-27)
parents 6b6d14c9f7e9
children
rev   line source
pascal@19515 1 ;***************************************************************
pascal@19515 2 ;****** This file is distributed under GPL
pascal@19515 3 ;***************************************************************
pascal@19515 4 ideal
pascal@24034 5 %PAGESIZE 255
pascal@19515 6 %crefref
pascal@19515 7 %noincl
pascal@19515 8 %nomacs
pascal@24019 9
pascal@24019 10 include "common.inc"
pascal@24019 11
pascal@19636 12 p8086
pascal@19515 13
pascal@23996 14 group DGROUP _TEXT
pascal@19515 15 assume cs:DGROUP,ds:DGROUP
pascal@19515 16
pascal@19515 17 segment _TEXT byte public use16 'CODE'
pascal@19515 18
pascal@19515 19 ;***************************************************************
pascal@19515 20 ;void enable_a20_xmm();
pascal@19515 21 ;***************************************************************
pascal@19515 22 global _enable_a20_xmm:near
pascal@19515 23 proc _enable_a20_xmm near
pascal@19515 24
pascal@24013 25 mov ch,03h ;global enable a20
pascal@19515 26 call xmm_driver ;
pascal@24013 27 mov ch,05h ;local enable a20
pascal@19515 28 ;jmp xmm_driver ;
pascal@19515 29
pascal@19515 30 endp _enable_a20_xmm
pascal@19515 31
pascal@19515 32 ;***************************************************************
pascal@24013 33 ;Call xmm driver addr (success: ax=1)
pascal@20142 34 ;void xmm_driver(ah)
pascal@19515 35 ;***************************************************************
pascal@19515 36 proc xmm_driver near
pascal@19515 37
pascal@24013 38 pop bx ; \
pascal@24013 39 push cs ; fake far call
pascal@24013 40 push bx ; /
pascal@20142 41 mov ax,4300h ; installation check in al
pascal@19515 42 int 2fh
pascal@19515 43 cmp al,80h
pascal@24013 44 jne @@xmm_fail
pascal@20142 45 mov ax,4310h ; get driver address in es:bx
pascal@19515 46 int 2fh
pascal@24013 47 xchg ax,cx ; restore cmd
pascal@23996 48
pascal@24013 49 push es ; jmp far es:bx
pascal@24013 50 push bx ; avoid 08h 0Fh 12h and 8Fh functions using bx
pascal@23996 51 @@xmm_fail:
pascal@19538 52 retf
pascal@19538 53
pascal@19515 54 endp xmm_driver
pascal@19515 55
pascal@23992 56 ifdef WITH_XMM_ALLOC
pascal@22007 57 include "himem.inc"
pascal@20142 58
pascal@19515 59 ;***************************************************************
pascal@23992 60 ;_fastcall void xmm_alloc(si:struct image_himem *m)
pascal@19515 61 ;***************************************************************
pascal@20528 62 global @xmm_alloc$qp11image_himem:near
pascal@20528 63 proc @xmm_alloc$qp11image_himem near
pascal@19515 64
pascal@23999 65 extrn _cmdnum:dword
pascal@24068 66 ifdef CPUTYPE
pascal@24068 67 skip_alloc = (byte _cmdnum+20)
pascal@24068 68 else
pascal@23999 69 skip_alloc = (byte _cmdnum+16)
pascal@24068 70 endif
pascal@24013 71 LARGE_XMM_ALLOC = 1
pascal@24013 72 ifdef LARGE_XMM_ALLOC
pascal@24013 73 mov ch,89h ;allocate blk of EDX kilobytes
pascal@24014 74 test [skip_alloc],ch
pascal@23999 75 jne @@err
pascal@24013 76 extrn _cpu386:byte
pascal@24013 77 test [_cpu386],ch
pascal@24013 78 je @@not386
pascal@24013 79 p386
pascal@23992 80 mov edx,[(image_himem si).size] ; m->size
pascal@20142 81 ;dec edx
pascal@19515 82 shr edx,10 ; to Kb
pascal@20486 83 inc edx
pascal@24013 84 call xmm_driver ;
pascal@24013 85 dec ax ; Z=OK
pascal@24013 86 jz @@gotit
pascal@24013 87 @@not386:
pascal@24013 88 mov cl,16-10
pascal@19515 89 else
pascal@24013 90 mov cl,16-10
pascal@24013 91 test [skip_alloc],cl ; 06h & ('*'=2Ah) = 02h
pascal@24013 92 jne @@err
pascal@24013 93 endif
pascal@24013 94 p8086
pascal@20142 95 ;mov ax,-1
pascal@20142 96 ;cwd
pascal@23992 97 ;add ax,[word (image_himem si).size] ; lo m->size
pascal@23992 98 ;adc dx,[word (image_himem si+2).size] ; hi m->size
pascal@23992 99 les ax,[dword (image_himem si).size] ; m->size
pascal@21791 100 extrn N_LXLSH@ES:near
pascal@21791 101 call N_LXLSH@ES
pascal@20486 102 inc dx
pascal@24013 103 mov ch,9h ;allocate blk of DX kilobytes (<64Mb)
pascal@19515 104 call xmm_driver ;
pascal@24013 105 dec ax ; Z=OK
pascal@23999 106 jnz @@err
pascal@24013 107 @@gotit:
pascal@19515 108 ;now: dx=handle of the blk
pascal@24013 109 mov ch,0Ch ;lock blk
pascal@19515 110 call xmm_driver ;
pascal@19515 111 ;now: dx:bx=addr of blk
pascal@24013 112 ;dec ax ; Z=OK
pascal@24013 113 ;jnz @@err
pascal@23999 114 mov [word (image_himem si).buf],bx ; lo m->buf
pascal@23999 115 mov [word (image_himem si+2).buf],dx ; hi m->buf
pascal@19515 116 @@err:
pascal@19538 117 ret
pascal@19538 118
pascal@20528 119 endp @xmm_alloc$qp11image_himem
pascal@23992 120 endif
pascal@19515 121
pascal@19515 122 ends _TEXT
pascal@19515 123
pascal@19515 124 end
pascal@19515 125
pascal@19515 126 ;###### END OF FILE ############################################