Changeset 13


Ignore:
Timestamp:
Jul 25, 2009, 7:22:20 AM (10 years ago)
Author:
brandonlw
Message:

Threw in a whole bunch of linking code that doesn't work, but we're getting there

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/OS2.zws

    r10 r13  
    2222#begin 
    2323NAME = Z80180 
     24#end 
     25 
     26[EMULATOR] 
     27#begin 
     28NAME =  
    2429#end 
    2530 
     
    3641SOURCE = page00\input.asm 
    3742SOURCE = page00\hooks.asm 
     43SOURCE = page00\edit.asm 
    3844SOURCE = page00\util.asm 
    3945SOURCE = page00\jumptable.asm 
  • trunk/includes/os2.inc

    r12 r13  
    4747kbdScanCode                 EQU    843Fh 
    4848; 
     49kbdKey                      EQU    8444h 
    4950kbdGetKy                    EQU    8445h 
    5051; 
     
    6162RAMChecksum                 EQU    85BEh 
    6263; 
     64ioFlag                      EQU    8670h 
     65; 
     66sndRecState                 EQU    8672h 
     67ioErrState                  EQU    8673h 
     68header                      EQU    8674h 
     69; 
     70ioData                      EQU    867Dh 
     71; 
     72errNo                       EQU    86DDh 
     73errSP                       EQU    86DEh 
     74; 
    6375flags                       EQU    89F0h ;IY is always set to this 
    6476; 
     
    7284editBtm                     EQU    96FAh 
    7385; 
     86fpBase                      EQU    9822h 
     87FPS                         EQU    9824h 
     88OPBase                      EQU    9826h 
     89OPS                         EQU    9828h 
     90; 
    7491appBackUpScreen             EQU    9872h 
    7592; 
     
    83100offPageCallPage             EQU    9C83h 
    84101offPageCallAddress          EQU    9C84h 
     102; 
     103linkDelay                   EQU    9CACh 
    85104; 
    86105nestedHookLevels            EQU    9CAEh ;not sure this is of any use 
     
    151170linkKeyFlags                EQU    18h 
    152171hw2TimerSkipped             EQU    2      ;1=this firing of HW 2 timer skipped (state of skipHW2Timer,(iy+interruptFlags) 
     172 
     173linkFlags                   EQU    1Bh 
     174useUSB                      EQU    5 
    153175 
    154176getKeyFlags                 EQU    28h 
  • trunk/page00/boot.asm

    r11 r13  
    456456       set onRunning,(iy+onFlags) 
    457457;Start the OS, minimal as it is 
     458       ld hl,0 
     459       ld (appBackUpScreen+50),hl 
    458460       set indicRun,(iy+indicFlags) 
    459461       ld hl,1 
     
    475477       set apdAble,(iy+apdFlags) 
    476478       set apdRunning,(iy+apdFlags) 
    477 $$:    B_CALL getKey 
    478        ld hl,6 
     479$$:    ld hl,6 
     480       ld (curRow),hl 
     481       B_CALL getKey 
     482       ld hl,7 
    479483       ld (curRow),hl 
    480484       call DispHexA 
    481485       cp 37h 
    482486       jr nz,notKey 
    483        ld a,(iy+12h) 
     487       ld a,(iy+shiftFlags) 
    484488       xor 00001000b 
    485        ld (iy+12h),a 
     489       ld (iy+shiftFlags),a 
    486490       jr $B 
    487491notKey:cp 38h 
  • trunk/page00/display.asm

    r12 r13  
    22 SEGMENT PAGE00 
    33 
    4  PUBLIC AnimateRunIndicator,DispHexA,PutS,PutC,curBlink,SaveOScreen 
     4 PUBLIC AnimateRunIndicator,DispHexA,PutS,PutC,curBlink,SaveOScreen,DispHexHL 
    55 EXTERN IsAtEditTail,IsAtBtm 
    66 
  • trunk/page00/util.asm

    r12 r13  
    1313Mov9ToOP1: 
    1414FPAdd: 
    15 _APP_PUSH_ERRORH: 
    16 _APP_POP_ERRORH: 
    1715OP1ToOP2: 
    1816LCDDelay: 
     
    2523       ret 
    2624 
     25_APP_PUSH_ERRORH: 
     26       pop de 
     27       push hl 
     28       ld b,a 
     29       in a,(6) 
     30       push af 
     31       ld a,b 
     32       ld hl,(errSP) 
     33       push hl 
     34       ld bc,(fpBase) 
     35       ld hl,(FPS) 
     36       or a 
     37       sbc hl,bc 
     38       push hl 
     39       ld bc,(OPBase) 
     40       ld hl,(OPS) 
     41       sbc hl,bc 
     42       push hl 
     43       ld (errSP),sp 
     44       ex de,hl 
     45       jp (hl) 
     46 
     47_APP_POP_ERRORH: 
     48       pop bc 
     49       ld sp,(errSP) 
     50       pop af 
     51       pop af 
     52       ex (sp),hl 
     53       ld (errSP),hl 
     54       pop hl 
     55       pop af 
     56       pop af 
     57       push bc 
     58       ret 
     59 
    2760BCALL: 
    2861       push hl 
     
    157190 
    158191JErrorNo: 
    159        ;TODO: come back to this 
     192       ld (errNo),a 
     193       call NZIf83Plus 
     194       jr z,$F 
     195       ld a,0C0h 
     196       out (bport),a 
     197       jr JErrorNo_1 
     198$$:    ld a,80h 
     199       out (laEnPort),a 
     200       res linkAssistEnabled,(iy+linkAssistFlags) 
     201JErrorNo_1: 
     202       res indicOnly,(iy+indicFlags) 
     203       ;res 4,(iy+24h) 
     204       ld sp,(errSP) 
     205       ld hl,(OPBase) 
     206       pop de 
     207       add hl,de 
     208       ld (OPS),hl 
     209       pop de 
     210       ld hl,(fpBase) 
     211       add hl,de 
     212       ld (FPS),hl 
     213       pop hl 
     214       ld (errSP),hl 
     215       pop af 
     216       out (6),a 
     217       ld a,(errNo) 
    160218       ret 
    161219        
  • trunk/page01/01base.asm

    r9 r13  
    3838receivingData: 
    3939       B_CALL keyscnlnk 
    40        ld a,(8444h) 
     40       ld a,(kbdKey) 
    4141       or a 
    4242       jr z,GetKeyMainLoop 
  • trunk/page1C/1Cbase.asm

    r4 r13  
    55 
    66 PUBLIC UnlockFlash,LockFlash,OutputProtectedPort,keyscnlnk 
    7  EXTERN DispHexA 
     7 EXTERN DispHexA,NZIf83Plus,PutC,DispHexHL 
     8 ;You can execute the below routines only because they rely on page 0. 
     9 EXTERN JErrorNo 
    810 
    911LockFlash: 
     
    3537keyscnlnk: 
    3638;TODO: flesh this out 
     39       di 
    3740       ld hl,(curRow) 
    3841       push hl 
    39        ld hl,0001h 
     42       ld hl,5 
    4043       ld (curRow),hl 
    41        ld a,(appBackUpScreen) 
    42        inc a 
    43        ld (appBackUpScreen),a 
     44       ld hl,(appBackUpScreen+50) 
     45       inc hl 
     46       ld (appBackUpScreen+50),hl 
     47       call DispHexHL 
     48       pop hl 
     49       ld (curRow),hl 
     50       res enableHW2Timer,(iy+interruptFlags) 
     51       call NZIf83Plus 
     52       jr nz,$F 
     53       ld b,a 
     54       ld a,(9CAFh) 
     55       or a 
     56       ld a,b 
     57;       jr nz,keyscnlnk1 
     58$$:    call CheckLinkLines 
     59       jr nz,eiRet 
     60       call EnableLinkAssist 
     61keyscnlnk1: 
     62       call MachineIDTo73h 
     63       ld a,(ioErrState) 
     64       push af 
     65       ld a,(sndRecState) 
     66       push af 
     67       ld a,(ioFlag) 
     68       push af 
     69       ld hl,ioFlag 
     70       res 1,(hl) 
     71       ld a,7 
     72       ld (sndRecState),a 
     73       ld a,(iy+curFlags) 
     74       push af 
     75       res 2,(iy+curFlags) 
     76       ld hl,keyscnlnkHandler 
     77       call APP_PUSH_ERRORH 
     78       set indicOnly,(iy+indicFlags) 
     79       ld a,(ioData) 
     80       call ContinueGetByte 
     81       ld hl,(curRow) 
     82       push hl 
     83       ld hl,0707h 
     84       ld (curRow),hl 
    4485       call DispHexA 
    4586       pop hl 
    4687       ld (curRow),hl 
    47        ret 
    48  
     88       call Get3Bytes 
     89       ld a,(header+1) 
     90       cp 68h 
     91       call nz,DispHexA 
     92       ld a,5 
     93       call PutC 
     94       jr sendAckEnd 
     95sendAckEnd: 
     96       call SendAcknowledge 
     97keyscnlnkEnd: 
     98       call APP_POP_ERRORH 
     99       jr $F 
     100keyscnlnkHandler: 
     101$$:    di 
     102       call DisableLinkAssist 
     103       pop af 
     104       bit 2,a 
     105       jr z,$F 
     106       set curAble,(iy+curFlags) 
     107$$:    pop af 
     108       ld (ioFlag),a 
     109       pop af 
     110       ld (sndRecState),a 
     111       pop af 
     112       ld (ioErrState),a 
     113       set apdRunning,(iy+apdFlags) 
     114       di 
     115       res indicOnly,(iy+indicFlags) 
     116       ld a,5 
     117       out (LCDinstPort),a 
     118eiRet: ei 
     119       ret 
     120 
     121Get3Bytes: 
     122       ld (header),a 
     123       bit 1,(iy+1Bh) 
     124       jr z,$F 
     125       cp 95h 
     126       jr Get3From4BytePacket 
     127$$:    cp 73h 
     128       jr z,Get3From4BytePacket 
     129       cp 23h 
     130       jr z,Get3From4BytePacket 
     131       cp 74h 
     132       jr z,Get3From4BytePacket 
     133       cp 82h 
     134       jr z,Get3From4BytePacket 
     135       cp 02h 
     136       jr z,Get3From4BytePacket 
     137       cp 12h 
     138       jr z,Get3From4BytePacket 
     139       cp 83h 
     140       jr z,Get3From4BytePacket 
     141       cp 03h 
     142       jr z,Get3From4BytePacket 
     143       cp 13h 
     144       jr z,Get3From4BytePacket 
     145       cp 08h 
     146       jr z,Get3From4BytePacket 
     147       call RecAByteIO 
     148       ld (header+1),a 
     149       cp 68h 
     150       jr z,$F 
     151       cp 47h 
     152       jr z,$F 
     153       cp 74h 
     154       jr z,$F 
     155       cp 2Dh 
     156       jr z,$F 
     157       jp JErrorNo 
     158Get3From4BytePacket: 
     159       call RecAByteIO 
     160       ld (header+1),a 
     161$$:    call RecAByteIO 
     162       ld (header+2),a 
     163       call RecAByteIO 
     164       ld (header+3),a 
     165       ret 
     166 
     167CheckLinkLines: 
     168       ld bc,15 
     169       ld hl,ioData 
     170       ld (hl),a 
     171       call NZIf83Plus 
     172       jr nz,$F 
     173       bit linkAssistEnabled,(iy+linkAssistFlags) 
     174       jr nz,xorAret 
     175       in a,(20h) 
     176       and 1 
     177       jr z,$F 
     178       ld bc,32 
     179$$:    in a,(0) 
     180       and 3 
     181       cp (hl) 
     182       ret nz 
     183       dec bc 
     184       ld a,b 
     185       or c 
     186       jr nz,$B 
     187       ret 
     188xorAret: 
     189       xor a 
     190       ret 
     191 
     192EnableLinkAssist: 
     193       call NZIf83Plus 
     194       ret nz 
     195       bit linkAssistEnabled,(iy+linkAssistFlags) 
     196       ret nz 
     197       set linkAssistEnabled,(iy+linkAssistFlags) 
     198       in a,(laStatusPort) 
     199       xor a 
     200       out (laEnPort),a 
     201       ret 
     202 
     203DisableLinkAssist: 
     204       in a,(statusPort) 
     205       and STATUS_NON_83P_MASK 
     206       ret z 
     207       in a,(laStatusPort) 
     208       and 99h 
     209       ret nz 
     210       res linkAssistEnabled,(iy+linkAssistFlags) 
     211       ld a,80h 
     212       out (laEnPort),a 
     213       ret 
     214 
     215MachineIDTo73h: 
     216       push af 
     217       ld a,(iy+linkFlags) 
     218       and 0E1h 
     219       ld (iy+linkFlags),a 
     220       pop af 
     221       ret 
     222 
     223RecAByteIO: 
     224       di 
     225       call ReceiveByteToC 
     226       call RecAByteIO_1 
     227       ret c 
     228       ret nz 
     229       jr z,RecAByteIO 
     230RecAByteIO_1: 
     231;I think this is a TI-Keyboard routine, let it fail 
     232       cp 1 
     233       ld a,c 
     234;       jr nz,$F 
     235       cp 0E0h 
     236       ret nz 
     237       scf 
     238       ret 
     239ReceiveByteToC: 
     240       ld b,8 
     241receiveByteLoop: 
     242       call NZIf83Plus 
     243       jr z,ReceiveLAByteToC 
     244       ld de,0FFFh 
     245       jr startReceiveLoop 
     246receiveLoop: 
     247       in a,(0) 
     248       and 3 
     249       jp z,JErrorNo 
     250       cp 3 
     251       jr nz,ReceiveByteToC_Ready 
     252       in a,(0) 
     253       and 3 
     254       jr z,JErrorNo 
     255       cp 3 
     256       jr nz,ReceiveByteToC_Ready 
     257startReceiveLoop: 
     258       dec de 
     259       ld a,d 
     260       or e 
     261       jr nz,receiveLoop 
     262       jp JErrorNo 
     263ReceiveByteToC_Ready: 
     264       cp 2 
     265       jr z,RBTC_1 
     266       ld a,1 
     267       out (0),a 
     268       rr c 
     269       ld de,0FFFFh 
     270$$:    in a,(0) 
     271       and 3 
     272       cp 2 
     273       jr z,RBTC_2 
     274       dec de 
     275       ld a,d 
     276       or e 
     277       jr nz,$B 
     278       jp JErrorNo 
     279RBTC_2:xor a 
     280       out (0),a 
     281       ld d,4 
     282$$:    dec d 
     283       jr z,$F 
     284       in a,(0) 
     285       and 3 
     286       cp 3 
     287       jr nz,$B 
     288$$:    djnz receiveByteLoop 
     289       ld a,0 
     290       ret 
     291RBTC_1:ld a,2 
     292       out (0),a 
     293       rr c 
     294       ld de,0FFFFh 
     295$$:    in a,(0) 
     296       and 3 
     297       cp 1 
     298       jr z,RBTC_2 
     299       dec de 
     300       ld a,d 
     301       or e 
     302       jr nz,$B 
     303       jp JErrorNo 
     304ReceiveLAByteToC: 
     305       call EnableLinkAssist 
     306       call ResetLATimeout 
     307$$:    xor a 
     308       ld (9C86h),a 
     309       call NZIfTimeout 
     310       jp nz,JErrorNo 
     311       in a,(9) 
     312       bit 6,a 
     313       jr nz,$F 
     314       and 11h 
     315       jr z,$B 
     316       in a,(0Ah) 
     317       ld c,a 
     318       ld a,0 
     319       ret 
     320$$:    and 11h 
     321       jp z,JErrorNo 
     322       in a,(0Ah) 
     323       ld c,a 
     324       ld a,1 
     325       ret 
     326NZIfTimeout: 
     327       push hl 
     328       ld h,2 
     329$$:    dec h 
     330       jr nz,$B 
     331       ld hl,(linkDelay) 
     332       dec hl 
     333       ld (linkDelay),hl 
     334       ld a,h 
     335       or l 
     336       jr nz,$F 
     337       ld a,1 
     338       jr NZIT_1 
     339$$:    ld a,0 
     340NZIT_1:or a 
     341       pop hl 
     342       ret 
     343ResetLATimeout: 
     344       push hl 
     345       ld hl,0FFFFh 
     346       in a,(speedPort) 
     347       and 1 
     348       jr nz,$F 
     349       ld hl,6800h 
     350$$:    ld (linkDelay),hl 
     351       pop hl 
     352       ret 
     353ContinueGetByte: 
     354       set indicOnly,(iy+indicFlags) 
     355       di 
     356       call NZIf83Plus 
     357       jr nz,cgbNoAssist 
     358       di 
     359       call ReceiveLAByteToC 
     360       ret 
     361cgbNoAssist: 
     362       ld b,8 
     363       call ReceiveByteToC_Ready 
     364       ret 
     365SendAcknowledge: 
     366       ld hl,0 
     367SendAcknowledgeHL: 
     368       ld (header+2),hl 
     369       call MachineIDToL 
     370       ld h,56h 
     371       ld (header),hl 
     372Send4Bytes: 
     373       call EnableLinkAssist 
     374       ld hl,250 
     375$$:    dec hl 
     376       ld a,h 
     377       or l 
     378       jr nz,$B 
     379send4Loop: 
     380       call NZIf83Plus 
     381       jr z,send4LA 
     382       xor a 
     383       out (0),a 
     384       in a,(0) 
     385       and 3 
     386       cp 3 
     387       jr z,sendBytes 
     388send4ReceivedByte: 
     389       call ReceiveByteToC 
     390       jr send4Loop 
     391send4LA: 
     392       in a,(9) 
     393       and 19h 
     394       jr nz,send4ReceivedByte 
     395sendBytes: 
     396       ld hl,0 
     397       ld (header+4),hl 
     398       ld a,(header) 
     399       call SendAByte 
     400       ld a,(header+1) 
     401       call SendAByte 
     402       ld a,(header+2) 
     403       call SendAByte 
     404       ld a,(header+3) 
     405SendAByte: 
     406       ld c,a 
     407SendCByte: 
     408       call NZIf83Plus 
     409       jr z,sendByteLA 
     410       ld b,8 
     411sendLoop: 
     412       ld de,0FFFFh 
     413       rr c 
     414       jr nc,$F 
     415       ld a,2 
     416       jr sendContinue 
     417$$:    ld a,1 
     418sendContinue: 
     419       out (0),a 
     420bitLoop: 
     421       in a,(0) 
     422       and 3 
     423       jr z,bitDone 
     424       in a,(0) 
     425       and 3 
     426       jr z,bitDone 
     427       dec de 
     428       ld a,d 
     429       or e 
     430       jr nz,bitLoop 
     431       jp JErrorNo 
     432bitDone: 
     433       xor a 
     434       out (0),a 
     435       ld de,0FFFFh 
     436bitReallyDone: 
     437       dec de 
     438       ld a,d 
     439       or e 
     440       jp z,JErrorNo 
     441       in a,(0) 
     442       and 3 
     443       cp 3 
     444       jr nz,bitReallyDone 
     445       djnz sendLoop 
     446       ret 
     447sendByteLA: 
     448       call EnableLinkAssist 
     449       call ResetLATimeout 
     450sendByteLA_1: 
     451       ld a,0FAh 
     452       ld (9C86h),a 
     453       in a,(9) 
     454       bit 5,a 
     455       jr z,$F 
     456       ld a,c 
     457       out (0Dh),a 
     458$$:    call NZIfTimeout 
     459       jr z,sendByteLA_1 
     460       jp JErrorNo 
     461MachineIDToL: 
     462       ld l,82h 
     463       bit 2,(iy+linkFlags) 
     464       ret nz 
     465       ld l,95h 
     466       bit 1,(iy+linkFlags) 
     467       ret nz 
     468       ld l,83h 
     469       bit 3,(iy+linkFlags) 
     470       ret nz 
     471       ld l,03h 
     472       bit 4,(iy+linkFlags) 
     473       ret nz 
     474       ld l,73h 
     475       ret 
     476 
Note: See TracChangeset for help on using the changeset viewer.