Changeset 14


Ignore:
Timestamp:
Jul 25, 2009, 3:28:53 PM (10 years ago)
Author:
brandonlw
Message:

Linking is finally working, and we can send/receive IO acks and info packets (68h and 2Dh, respectively)

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/includes/os2.inc

    r13 r14  
    2828_keyscnlnk                  EQU 4A1Ah 
    2929_getKey                     EQU 4972h 
     30_Rec1stByteNC               EQU 4EFDh 
     31_RecAByteIO                 EQU 4F03h 
    3032_UnlockFlash                EQU 7000h 
    3133 
     
    3335; Boot Code Entry Points 
    3436;====================================================================== 
    35 _WriteAByte   EQU 8021h 
    36 _DispBootVer  EQU 808Ah 
     37_WriteAByte                 EQU 8021h 
     38_DispBootVer                EQU 808Ah 
     39_GetHWVer                   EQU 80BAh 
    3740 
    3841;====================================================================== 
     
    6063indicCounter                EQU    8476h 
    6164; 
     65iMathPtr5                   EQU    84DBh 
     66; 
    6267RAMChecksum                 EQU    85BEh 
    6368; 
     
    8893OPBase                      EQU    9826h 
    8994OPS                         EQU    9828h 
     95; 
     96pagedCount                  EQU    9834h 
     97pagedPN                     EQU    9835h 
     98pagedGetPtr                 EQU    9836h 
     99pagedPutPtr                 EQU    9838h 
     100pagedBuf                    EQU    983Ah ;16 bytes 
    90101; 
    91102appBackUpScreen             EQU    9872h 
     
    174185useUSB                      EQU    5 
    175186 
    176 getKeyFlags                 EQU    28h 
    177 kOffPressed                 EQU    3      ;1=[2nd][ON] was pressed (I think) 
    178 returnOffKey                EQU    7      ;1=return kOff key code instead of turning off 
    179  
    180 hookFlags4                  EQU    3Ah 
    181 USBActivityHookEnabled      EQU    0 
    182  
    183 linkAssistStatusFlags       EQU    3Dh 
    184 linkAssistError             EQU    7 
    185  
    186 linkAssistFlags             EQU    3Eh 
    187 linkAssistEnabled           EQU    0      ;1=link assist enabled (SE/84+ only) 
    188  
    189187;---------------------------------------------------------------------- 
    190188;           Available for Assembly Programming 
     
    197195runAtFastSpeed              EQU    5      ;1=run (hooks at least) at fast (15MHz) speed 
    198196 
     197getKeyFlags                 EQU    28h 
     198kOffPressed                 EQU    3      ;1=[2nd][ON] was pressed (I think) 
     199returnOffKey                EQU    7      ;1=return kOff key code instead of turning off 
     200 
    199201scriptFlag                  EQU    33h 
    200202ignoreBPLink                EQU    3      ;1=link activity hook override, will not be called 
     
    202204echoKeyRemotely             EQU    5      ;1=echo keypresses back through linkport as remote control requests 
    203205intBattCheckComplete        EQU    7      ;1=second hardware timer code has set battery state 
     206 
     207hookFlags4                  EQU    3Ah 
     208USBActivityHookEnabled      EQU    0 
     209 
     210linkAssistStatusFlags       EQU    3Dh 
     211linkAssistError             EQU    7 
     212 
     213linkAssistFlags             EQU    3Eh 
     214linkAssistEnabled           EQU    0      ;1=link assist enabled (SE/84+ only) 
    204215 
    205216;====================================================================== 
  • trunk/page00/boot.asm

    r13 r14  
    44 include "includes\os2.inc" 
    55 
     6 PUBLIC LdHLInd 
    67 EXTERN PutS,PutC,ifastcopy,CallUSBActivityHook,CheckLowBatteriesTurnOff,SaveOScreen 
    78 EXTERN RunLinkActivityHook,HandleLinkKeyActivity 
     
    458459       ld hl,0 
    459460       ld (appBackUpScreen+50),hl 
     461       ld (appBackUpScreen+52),hl 
    460462       set indicRun,(iy+indicFlags) 
    461463       ld hl,1 
     
    483485       ld (curRow),hl 
    484486       call DispHexA 
     487       cp 36h 
     488       jr z,waitOnByte 
    485489       cp 37h 
    486490       jr nz,notKey 
     
    492496       call z,PowerOff 
    493497       jr $B 
     498waitOnByte: 
     499       di 
     500       res curAble,(iy+curFlags) 
     501       ld hl,(curRow) 
     502       push hl 
     503       ld hl,handler 
     504       call APP_PUSH_ERRORH 
     505       ld hl,2 
     506       ld (curRow),hl 
     507       ld a,6 
     508       call PutC 
     509       B_CALL Rec1stByteNC 
     510       call DispHexA 
     511       B_CALL RecAByteIO 
     512       call DispHexA 
     513       B_CALL RecAByteIO 
     514       call DispHexA 
     515       B_CALL RecAByteIO 
     516       call DispHexA 
     517       call APP_POP_ERRORH 
     518handler: 
     519       pop hl 
     520       ld (curRow),hl 
     521       res indicOnly,(iy+indicFlags) 
     522       set curAble,(iy+curFlags) 
     523       jr $B 
    494524sTest: 
    495525       DB "This is a test!",0 
  • trunk/page00/util.asm

    r13 r14  
    55 PUBLIC Placeholder005Fh,Placeholder0006h,Placeholder004Eh,Placeholder0003h,Placeholder0035h 
    66 PUBLIC outputPage,NZIf83Plus,ZIfSlowSpeed,GetBytePaged,MakeOffPageCall 
    7  PUBLIC BCALL,BJUMP,JErrorNo 
     7 PUBLIC BCALL,BJUMP,JErrorNo,SetupPagedPtr,PagedGet 
    88 EXTERN Page0Call,UpdateAPD,PowerOff,GetCSC 
    99 
     
    2222Placeholder005Fh: 
    2323       ret 
     24 
     25SetupPagedPtr: 
     26       push af 
     27       ld a,b 
     28       ld (pagedPN),a 
     29       ld (pagedGetPtr),de 
     30       xor a 
     31       ld (pagedCount),a 
     32       pop af 
     33       ret 
     34 
     35PagedGet: 
     36       push hl 
     37PagedGet_1: 
     38       ld a,(pagedCount) 
     39       or a 
     40       jr z,$F 
     41       dec a 
     42       ld (pagedCount),a 
     43       ld hl,(pagedPutPtr) 
     44       ld a,(hl) 
     45       inc hl 
     46       ld (pagedPutPtr),hl 
     47       pop hl 
     48       ret 
     49$$:    push bc 
     50       push de 
     51       in a,(memPageAPort) 
     52       push af 
     53       ld a,(pagedPN) 
     54       out (6),a 
     55       ld bc,16 
     56       ld a,c 
     57       ld (pagedCount),a 
     58       ld de,pagedBuf 
     59       ld (pagedPutPtr),de 
     60       ld hl,(pagedGetPtr) 
     61       bit 7,h 
     62       jr nz,getAllRAM 
     63getPagedByte: 
     64       ldi 
     65       bit 7,h 
     66       jr z,$F 
     67       in a,(memPageAPort) 
     68       inc a 
     69       ld (pagedPN),a 
     70       out (memPageAPort),a 
     71       ld hl,4000h 
     72$$:    ld a,b 
     73       or c 
     74       jr nz,getPagedByte 
     75       jr $F 
     76getAllRAM: 
     77       ldir 
     78$$:    ld (pagedGetPtr),hl 
     79       pop af 
     80       out (memPageAPort),a 
     81       pop de 
     82       pop bc 
     83       jr PagedGet_1 
    2484 
    2585_APP_PUSH_ERRORH: 
  • trunk/page1C/1Cbase.asm

    r13 r14  
    33 
    44 include "includes\os2.inc" 
    5  
    6  PUBLIC UnlockFlash,LockFlash,OutputProtectedPort,keyscnlnk 
    7  EXTERN DispHexA,NZIf83Plus,PutC,DispHexHL 
     5 include "includes\internal.inc" 
     6 
     7 PUBLIC UnlockFlash,LockFlash,OutputProtectedPort,keyscnlnk,Rec1stByteNC,RecAByteIO 
     8 EXTERN DispHexA,NZIf83Plus,PutC,DispHexHL,HandleLinkKeyActivity,SetupPagedPtr,PagedGet 
    89 ;You can execute the below routines only because they rely on page 0. 
    9  EXTERN JErrorNo 
     10 EXTERN JErrorNo,LdHLInd 
    1011 
    1112LockFlash: 
     
    3637 
    3738keyscnlnk: 
    38 ;TODO: flesh this out 
    39        di 
    40        ld hl,(curRow) 
    41        push hl 
    42        ld hl,5 
    43        ld (curRow),hl 
    44        ld hl,(appBackUpScreen+50) 
    45        inc hl 
    46        ld (appBackUpScreen+50),hl 
    47        call DispHexHL 
    48        pop hl 
    49        ld (curRow),hl 
     39       di 
    5040       res enableHW2Timer,(iy+interruptFlags) 
     41       call EnableLinkAssist 
    5142       call NZIf83Plus 
    5243       jr nz,$F 
     
    5849$$:    call CheckLinkLines 
    5950       jr nz,eiRet 
    60        call EnableLinkAssist 
    6151keyscnlnk1: 
    6252       call MachineIDTo73h 
     
    7969       ld a,(ioData) 
    8070       call ContinueGetByte 
    81        ld hl,(curRow) 
    82        push hl 
    83        ld hl,0707h 
    84        ld (curRow),hl 
     71       call Get3Bytes 
     72       ld hl,cmdTable 
     73       ld b,(hl) 
     74       inc hl 
     75       ld a,(header+1) 
     76$$:    cp (hl) 
     77       inc hl 
     78       jr z,$F 
     79       inc hl 
     80       inc hl 
     81       djnz $B 
    8582       call DispHexA 
    86        pop hl 
    87        ld (curRow),hl 
    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 
    95 sendAckEnd: 
     83       di 
     84       halt 
     85       jp JErrorNo 
     86$$:    call LdHLInd 
     87       jp (hl) 
     88sendAcknowledgeEnd: 
    9689       call SendAcknowledge 
    9790keyscnlnkEnd: 
    9891       call APP_POP_ERRORH 
    99        jr $F 
    10092keyscnlnkHandler: 
    101 $$:    di 
     93       di 
    10294       call DisableLinkAssist 
    10395       pop af 
     
    118110eiRet: ei 
    119111       ret 
     112cmdTable: 
     113       DB (cmdTableEnd-cmdTableStart)/3 
     114cmdTableStart: 
     115       DB 68h 
     116       DW sendAcknowledgeEnd 
     117       DB 2Dh 
     118       DW sendInfoPacket 
     119cmdTableEnd: 
     120 
     121sendInfoPacket: 
     122       call SendAcknowledge 
     123       call Get4BytesNC 
     124       cp 09h 
     125       jr nz,JErrorNo 
     126       call SendAcknowledge 
     127       ld hl,ioData 
     128       ld (hl),OS2_VERSION_MAJOR 
     129       inc hl 
     130       ld (hl),OS2_VERSION_MINOR 
     131       inc hl 
     132       ld (hl),2 
     133       inc hl 
     134       B_CALL GetHWVer 
     135       ld (hl),a 
     136       inc hl 
     137       ld (hl),09h 
     138       inc hl 
     139       ld (hl),01h 
     140       inc hl 
     141       ld (hl),0 
     142       inc hl 
     143       ld (hl),0 
     144       inc hl 
     145       ld (hl),0 
     146       ld a,15h 
     147       ld hl,11 
     148       call SendCommandA 
     149       jr keyscnlnkEnd 
     150SendCommandA: 
     151       ld de,ioData 
     152       ex de,hl 
     153SendACommand: 
     154       ld b,0 
     155       ex de,hl 
     156       call SetupPagedPtr 
     157       ex de,hl 
     158       ld (iMathPtr5),hl 
     159       ld (header+2),de 
     160       ld h,a 
     161       call EnableLinkAssist 
     162       set indicOnly,(iy+indicFlags) 
     163       call MachineIDToL 
     164       ld (header),hl 
     165       call Send4Bytes 
     166       ld hl,(iMathPtr5) 
     167       ld de,(header+2) 
     168       ld bc,0 
     169       ld (header+4),bc 
     170       jr startSendCmdLoop 
     171sendCmdLoop: 
     172       push de 
     173       ld a,(pagedPN) 
     174       or a 
     175       jr z,$F 
     176       call PagedGet 
     177       ld c,a 
     178       jr sendCmdByte 
     179$$:    ld c,(hl) 
     180sendCmdByte: 
     181       call SendCAndAddToChecksum 
     182       pop de 
     183       dec de 
     184       inc hl 
     185startSendCmdLoop: 
     186       ld a,d 
     187       or e 
     188       jr nz,sendCmdLoop 
     189SendChecksumGetAcknowledge: 
     190       ld hl,(header+4) 
     191       ld a,l 
     192       push hl 
     193       call SendAByte 
     194       pop af 
     195       call SendAByte 
     196ReceiveAcknowledge: 
     197       call Get4BytesNC 
     198       ld a,(header+1) 
     199       cp 56h 
     200       ret z 
     201       jp JErrorNo 
     202SendCAndAddToChecksum: 
     203       ld b,0 
     204       ex de,hl 
     205       ld hl,(header+4) 
     206       add hl,bc 
     207       ld (header+4),hl 
     208       ex de,hl 
     209       jr SendCByte 
    120210 
    121211Get3Bytes: 
     
    156246       jr z,$F 
    157247       jp JErrorNo 
     248Get4BytesNC: 
     249       call Rec1stByteNC 
     250       ld (header),a 
    158251Get3From4BytePacket: 
    159252       call RecAByteIO 
     
    173266       bit linkAssistEnabled,(iy+linkAssistFlags) 
    174267       jr nz,xorAret 
    175        in a,(20h) 
     268       in a,(speedPort) 
    176269       and 1 
    177270       jr z,$F 
     
    456549       ld a,c 
    457550       out (0Dh),a 
     551       ret 
    458552$$:    call NZIfTimeout 
    459553       jr z,sendByteLA_1 
    460554       jp JErrorNo 
    461555MachineIDToL: 
     556       ld (iy+linkFlags),0 
    462557       ld l,82h 
    463558       bit 2,(iy+linkFlags) 
     
    474569       ld l,73h 
    475570       ret 
    476  
     571Rec1stByteNC: 
     572       di 
     573       res indicOnly,(iy+indicFlags) 
     574       ld a,5 
     575       out (LCDinstPort),a 
     576       ei 
     577       call NZIf83Plus 
     578       jr nz,$F 
     579       call EnableLinkAssist 
     580       call LAReceiveByteToC 
     581       ld a,c 
     582       ret 
     583$$:    bit 4,(iy+9) 
     584       jp nz,JErrorNo 
     585       call HandleLinkKeyActivity 
     586       in a,(0) 
     587       and 3 
     588       cp 3 
     589       jr z,$B 
     590       set indicOnly,(iy+indicFlags) 
     591       call ReceiveByteToC_Ready 
     592       ld a,c 
     593       ret 
     594LAReceiveByteToC: 
     595       bit 4,(iy+9) 
     596       jp nz,JErrorNo 
     597       call HandleLinkKeyActivity 
     598       in a,(9) 
     599       and 58h 
     600       jr z,LAReceiveByteToC 
     601       set indicOnly,(iy+indicFlags) 
     602       jr ReceiveLAByteToC 
     603 
  • trunk/page1D/1Dbase.asm

    r4 r14  
    33 
    44 PUBLIC _JErrorNo,_UnlockFlash,_getKey,_keyscnlnk 
    5  EXTERN JErrorNo,UnlockFlash,GetKey,keyscnlnk 
     5 EXTERN JErrorNo,UnlockFlash,GetKey,keyscnlnk,Rec1stByteNC,RecAByteIO 
    66 
    77;4000h: 
     
    38433843       DW 0000h 
    38443844       DB 00h 
    3845 ;_Rec1stByteNC          equ 4EFDh 
    3846        DW 0000h 
    3847        DB 00h 
     3845_Rec1stByteNC: 
     3846       DW Rec1stByteNC 
     3847       DB 7Ch 
    38483848;_ContinueGetByte       equ 4F00h 
    38493849       DW 0000h 
    38503850       DB 00h 
    3851 ;_RecAByteIO            equ 4F03h 
    3852        DW 0000h 
    3853        DB 00h 
     3851_RecAByteIO: 
     3852       DW RecAByteIO 
     3853       DB 7Ch 
    38543854;_ReceiveVar            equ 4F06h 
    38553855       DW 0000h 
Note: See TracChangeset for help on using the changeset viewer.